J2ME 手机开发中遇到的kxml问题,急求答案!

zhangjiongrui 2008-10-17 01:46:49
最近做一个手机开发项目,遇到一些问题,长话短说,下面是我的代码:
import java.io.*;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import org.kxml.*;
import org.kxml.parser.*;

/**
* Simple MIDlet that demonstrates how an XML document can be parsed using kXML
* or NanoXML.
*/

public class Test extends MIDlet {


private static String xmlDocument = "<list><item>apple</item>"
+ "<item>orange</item>" + "<item>pear</item></list>";

private Display display;
private Command exitCommand = new Command("Exit", Command.EXIT, 1);

public Test() {
}

protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
exitMIDlet();
}

protected void pauseApp() {
}

protected void startApp() throws MIDletStateChangeException {
if (display == null) { // first time called...
initMIDlet();
}
}

private void initMIDlet() {
display = Display.getDisplay(this);

String[] items;

try {
items = parseUsingkXML(xmlDocument);

display.setCurrent(new ItemList(items));
} catch (Throwable e) {
e.printStackTrace();
}
}

public void exitMIDlet() {
notifyDestroyed();
}

// Parses a document using kXML, looking for "item"
// nodes and returning their content as an
// array of strings.

private String[] parseUsingkXML(String xml) {
try {
ByteArrayInputStream bin = new ByteArrayInputStream(xml.getBytes());
InputStreamReader in = new InputStreamReader(bin);
XmlParser parser = new XmlParser(in);
Vector items = new Vector();

parsekXMLItems(parser, items);

String[] tmp = new String[items.size()];
items.copyInto(tmp);
return tmp;
} catch (Exception e) {
e.printStackTrace();
return new String[] { e.toString() };
}
}

private void parsekXMLItems(XmlParser parser, Vector items)
throws IOException {
boolean inItem = false;

while (true) {
ParseEvent event = parser.read();
switch (event.getType()) {
case Xml.START_TAG:
if (event.getName().equals("item")) {
inItem = true;
}
break;
case Xml.END_TAG:
if (event.getName().equals("item")) {
inItem = false;
}
break;
case Xml.TEXT:
if (inItem) {
items.addElement(event.getText());
}
break;
case Xml.END_DOCUMENT:
return;
}
}
}

// Simple List UI component for displaying the list of
// items parsed from the XML document.

class ItemList extends List implements CommandListener {

ItemList(String[] list) {
super("Items", IMPLICIT, list, null);
addCommand(exitCommand);
setCommandListener(this);
}

public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
exitMIDlet();
}
}
}

}


在运行后,出现如下错误:
java.lang.NoClassDefFoundError: org/kxml/parser/XmlParser
at Test.parseUsingkXML(+21)
at Test.initMIDlet(+15)
at Test.startApp(+11)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.sun.midp.midlet.Scheduler.schedule(+270)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+80)
Execution completed.
3409761 bytecodes executed
767 thread switches
1671 classes in the system (including system classes)
17863 dynamic objects allocated (542628 bytes)
3 garbage collections (459916 bytes collected)
也就是找不到引用的kxml类包,请高手指教!谢谢
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjiongrui 2008-10-31
  • 打赏
  • 举报
回复
已经解决了,谢谢你们!呵呵
要把kxml源代码导入项目才成
bianmazi 2008-10-19
  • 打赏
  • 举报
回复
楼上正解.
andy11543070 2008-10-19
  • 打赏
  • 举报
回复
去开源网站下载Kxml解析包,然后导入到jbuilder or Eclipse
zhangjiongrui 2008-10-18
  • 打赏
  • 举报
回复
这里倒底有没有高人指点一下啊!
不会这么慢吧,在线急求答案!
源码下载地址: https://pan.quark.cn/s/c20c5da6957d 卸载 首先,需要核实是否存在先前安装的记录,或者系统是否预置了httpd服务,可通过以下命令进行验证: # rpm -qa | grep httpd 或者: # yum list | grep httpd 我之前已经进行过一次安装,因此在此会看到相应的显示结果: 然后我将着手卸载我的httpd,首要步骤是终止httpd服务的运行,对应的命令如下: # systemctl stop httpd.service 接着,无论是使用 rpm -e 还是 yum -erase 命令均可实现卸载,但需注意使用rpm -e命令前必须自行移除相关依赖包,因此我选择使用yum -erase命令进行卸载,具体命令为: # yum erase httpd.x86_64 在执行过程会提示确认操作 在Linux环境,CentOS 7 是一种非常普遍的操作系统,特别是在服务器应用方面。Apache HTTP Server(通常简称为Apache或httpd)是最广受欢迎的网页服务器软件之一,主要用于承载网站及相关服务。本资源将详尽说明在CentOS 7系统关于Apache服务的安装与移除流程。 ### 移除Apache服务 1. **核实安装情况**: 在执行卸载操作前,必须先确认Apache是否已安装。这可以通过查询已安装的软件包列表来完成,可选用以下任一命令: ```bash # rpm -qa | grep httpd # yum list | grep httpd ``` 若Apache已安装,上述命令将返回相关的软件包信息。 2. **终止服务运行**: 在卸载前,必须先停止正在运行的A...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 在信息技术行业,特别是在操作系统部署及维护方面,统一可扩展固件接口(UEFI)与Linux系统如Debian的相互配合是一个关键议题。本篇将深入分析"在Debian 9.13系统通过UEFI启动的UEFI Shell"这一焦点,并阐述如何处理安装期间遭遇的启动障碍。 UEFI作为替代传统BIOS的新型固件架构,它带来了更为先进、更为安全的启动机制,同时支持更大容量的存储设备以及更迅捷的启动时间。在部署Debian 9.13(Stretch版本)时,用户可以选择运用UEFI模式进行安装,从而获取上述种种好处。然而,UEFI启动过程需要特定的引导管理器,一般而言是GRUB2的UEFI版本,即称作grubx64.efi。 描述所述情形可能是由于安装阶段GRUB2引导管理器的UEFI版本未能被恰当地生成或设置,因而系统无法经由UEFI模式启动。在此情形下,"uefishell"工具便显得尤为重要。UEFI Shell是一个命令行界面,它允许用户在UEFI环境执行多样任务,包括手动引导操作系统。它提供了一个临时的补救措施,使用户得以纠正引导故障。 为了借助UEFI Shell来纠正启动故障,必须遵循以下步骤: 1. **获取UEFI Shell**:通常,UEFI Shell作为现代计算机UEFI固件的一部分预先安装,但在某些情况下,可能需要从设备制造商的官方网站上获取最新版本。 2. **插入搭载UEFI Shell的USB存储设备**:将下载的UEFI Shell文件拷贝至一个采用FAT32格式化的USB存储设备上,并将其接入计算机。 3. **进入UEFI配置界面**:重新...

13,096

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧