Java me 在类路径中,必须在LWUIT之前包含平台端口:如何解决此运行时异常?

Java me 在类路径中,必须在LWUIT之前包含平台端口:如何解决此运行时异常?,java-me,lwuit,midp,lwuit-form,lwuit-resource-editor,Java Me,Lwuit,Midp,Lwuit Form,Lwuit Resource Editor,可能重复: 我刚刚开始在J2ME中使用LWUIT。我对LWUIT没有更多的了解,但我更了解J2ME。我在我的J2ME项目中添加了LWUIT库,它的编译很好,但在运行时它显示以下异常: java.lang.RuntimeException:必须在类路径中的LWUIT之前包含平台端口 在com.sun.lwiit.impl.ImplementationFactory.createImplementation(ImplementationFactory.java:67)上 位于com.sun.lwu

可能重复:

我刚刚开始在J2ME中使用LWUIT。我对LWUIT没有更多的了解,但我更了解J2ME。我在我的J2ME项目中添加了LWUIT库,它的编译很好,但在运行时它显示以下异常:

java.lang.RuntimeException:必须在类路径中的LWUIT之前包含平台端口
在com.sun.lwiit.impl.ImplementationFactory.createImplementation(ImplementationFactory.java:67)上
位于com.sun.lwuit.Display.init(Display.java:406)
在HelloMidlet。(HelloMidlet.java:26)
在java.lang.Class.newInstance()中,bci=0
在com.sun.midp.main.CldcMIDletLoader.newInstance()上,bci=46
在com.sun.midp.midlet.MIDletStateHandler.createMIDlet()上,bci=66
在com.sun.midp.midlet.MIDletStateHandler.createAndRegisterMIDlet()上,bci=17
在com.sun.midp.midlet.MIDletStateHandler.startSuite()上,bci=27
位于com.sun.midp.main.AbstractMidleSuiteLoader.StartSite(),bci=52
位于com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(),bci=8
位于com.sun.midp.main.AbstractMidleSuiteLoader.RunMidleSuite(),bci=161
在com.sun.midp.main.AppIsolateMidleSuiteLoader.main()上,bci=26
如何解决这个问题

下面是我的代码:

导入com.sun.lwuit.*;
导入com.sun.lwuit.animations.CommonTransitions;
导入com.sun.lwuit.animations.Transition3D;
导入com.sun.lwuit.events.*;
导入com.sun.lwuit.layouts.BorderLayout;
导入com.sun.lwuit.layouts.BoxLayout;
导入com.sun.lwuit.plaf.UIManager;
导入com.sun.lwuit.util.Resources;
导入java.io.IOException;
公共类HelloMidlet扩展MIDlet实现ActionListener{
私人表格表格1;
私人表格2;
私有命令cmdRotate=新命令(“Rotate”);
专用命令cmdSlide=新命令(“幻灯片”);
私有命令cmdExit=新命令(“退出”);
公共HelloMidlet(){
Display.init(this);
}
公开作废startApp(){
资源r;
试一试{
r=Resources.open(“/TimelineTheme.res”);
UIManager.getInstance().setThemeProps(r.getTheme(“lWitDefault”);
}捕获(IOE异常){
//TODO:处理异常
e、 printStackTrace();
}
表格1=新表格(“表格1”);
form1.setLayout(新的BorderLayout());
表格1.addComponent(BorderLayout.NORTH,新标签(“我的第一张表格”);
表格1.添加组件(BorderLayout.WEST,新标签(“WEST”);
表格1.添加组件(BorderLayout.CENTER,新标签(“中心”);
表格1.添加组件(BorderLayout.EAST,新标签(“EAST”);
表单1.添加组件(BorderLayout.SOUTH,新标签(“单击旋转”);
form1.addCommand(cmdRotate);
form1.addCommand(cmdExit);
form1.addCommandListener(本);
form1.SetTransitionAniMator(CommonTransitions.CreateSiled(
CommonTransitions.SLIDE_水平,真,1000);
//设置表格2
表格2=新表格(“表格2”);
表格2.设置布局(新的BoxLayout(BoxLayout.Y_轴));
form2.addComponent(0,null,新标签(“这是第二种形式”);
form2.addCommand(cmdSlide);
form2.addCommand(cmdExit);
form2.addCommandListener(本);
form2.setTransitionInImator(Transition3D.createCube(1000,true));
表1.show();
}
public void pauseApp(){}
公共应用程序(布尔无条件){}
已执行的公共无效行动(行动事件ae){
如果(ae.getCommand()==cmdExit){
通知销毁();
}else if(ae.getCommand()==cmdRotate){
表2.show();
}else if(ae.getCommand()==cmdSlide){
表1.show();
}
}
}
你看到那篇帖子了吗

我认为这是一个类似的问题。试着解决它,正如上面问题的答案所建议的:

问题是,在我包含的UI jar中。LWUIT附带2个
UI.jar的“集合”。LWUIT\UI文件夹中的通用文件和
LWUIT\Ports文件夹中的特定于平台的。通用
其中一个被用作包含所有公共资源的“父”项目
但是,如果必须导入用于
站台。如自述文件所述:

虽然这些项目可以很容易地编译,但它们对于任何目的都是无用的,因为它们不包括用于 平台,要使用平台,需要使用合适的 将特定端口目录下的项目投影到给定平台

当我重新编译库以便删除 在Transitions3D.java文件中,我重新编译(然后导入)了泛型 UI.jar。正确的做法是编译父项目( 然后编译特定于端口的库(在我的例子中是 LWUIT\ports\MIDP\UI.jar),然后将其导入到项目中,然后 完成了


我认为Midlet代码不是解决这个问题所必需的。发布您的project.properties,更具体地说,libs.classpath属性可能很有用。我从他们那里没有任何想法,您能解释一下他告诉他们什么吗?我已经下载了最新的LWUIT zip文件,但其中没有类似文件夹LWUIT\ports和UI.jar文件。我该如何解决这个问题?您应该在这里从SVN下载LWUIT 1.5:在这里您可以找到UI端口使用lib目录中特定于平台的端口,并确保UI端口位于IO端口之前。您不需要UI.jar,因为它的内容包含在特定于平台的端口中。您能为我提供在netbean中工作的LUIT的下载链接,或者告诉我如何从该链接(SVN)下载吗