【问题标题】:You must include the platform port before the LWUIT in the classpath: How to solve this run time exception? [duplicate]您必须在类路径中的 LWUIT 之前包含平台端口:如何解决此运行时异常? [复制]
【发布时间】:2012-02-14 07:39:59
【问题描述】:

可能重复:
You must include the platform port before the LWUIT in the classpath runtime exception

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

java.lang.RuntimeException: You must include the platform port before the LWUIT in the classpath
    at com.sun.lwuit.impl.ImplementationFactory.createImplementation(ImplementationFactory.java:67)
    at com.sun.lwuit.Display.init(Display.java:406)
    at HelloMidlet.<init>(HelloMidlet.java:26)
    at java.lang.Class.newInstance(), bci=0
    at com.sun.midp.main.CldcMIDletLoader.newInstance(), bci=46
    at com.sun.midp.midlet.MIDletStateHandler.createMIDlet(), bci=66
    at com.sun.midp.midlet.MIDletStateHandler.createAndRegisterMIDlet(), bci=17
    at com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=27
    at com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=52
    at com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=8
    at com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=161
    at com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26

如何解决这个问题?

下面是我的代码:

import com.sun.lwuit.*;
import com.sun.lwuit.animations.CommonTransitions;
import com.sun.lwuit.animations.Transition3D;
import com.sun.lwuit.events.*;
import com.sun.lwuit.layouts.BorderLayout;
import com.sun.lwuit.layouts.BoxLayout;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
import java.io.IOException;

public class HelloMidlet extends MIDlet implements ActionListener {
    private Form form1;
    private Form form2;

    private Command cmdRotate = new Command("Rotate");
    private Command cmdSlide = new Command("Slide");
    private Command cmdExit = new Command("Exit");
        public HelloMidlet(){
            Display.init(this);
        }
  public void startApp() {
        Resources r;
        try{
            r=Resources.open("/TimelineTheme.res");
            UIManager.getInstance().setThemeProps(r.getTheme("LWUITDefault"));
        }catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        form1 = new Form("Form 1");
        form1.setLayout(new BorderLayout());
        form1.addComponent(BorderLayout.NORTH, new Label("My First Form"));
        form1.addComponent(BorderLayout.WEST, new Label("WEST"));
        form1.addComponent(BorderLayout.CENTER, new Label("CENTER"));
        form1.addComponent(BorderLayout.EAST, new Label("EAST"));
        form1.addComponent(BorderLayout.SOUTH, new Label("Click Rotate"));
        form1.addCommand(cmdRotate);
        form1.addCommand(cmdExit);
        form1.addCommandListener(this);
        form1.setTransitionInAnimator(CommonTransitions.createSlide(
                    CommonTransitions.SLIDE_HORIZONTAL, true, 1000));

        //Setup Form 2
        form2 = new Form("Form 2");
        form2.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
        form2.addComponent(0,null,new Label("This is the second Form"));
        form2.addCommand(cmdSlide);
        form2.addCommand(cmdExit);
        form2.addCommandListener(this);
        form2.setTransitionInAnimator(Transition3D.createCube(1000, true));

        form1.show();
  }

  public void pauseApp() {}

  public void destroyApp(boolean unconditional) {}

  public void actionPerformed(ActionEvent ae) {
   if (ae.getCommand()==cmdExit) {
            notifyDestroyed();
        } else if (ae.getCommand()==cmdRotate) {
            form2.show();
        } else if (ae.getCommand()==cmdSlide) {
            form1.show();
        }
  }
}

【问题讨论】:

  • 我认为 Midlet 代码不是解决问题所必需的。而是发布您的 project.properties,更具体地说, libs.classpath 属性可能有用。

标签: java-me lwuit midp lwuit-form lwuit-resource-editor


【解决方案1】:

你看到那个帖子了吗? You must include the platform port before the LWUIT in the classpath runtime exception

我认为这是一个类似的问题。尝试解决它,如上述问题的答案所示:

问题是在我包含的 UI jar 中。 LWUIT 自带 2 UI.jar 的“集合”。 LWUIT\UI 文件夹中的通用文件和 LWUIT\Ports 文件夹中特定于平台的那些。通用的 一个被用作包含所有常见的“父”项目 代码,但是如果您必须导入适用于您的 .jar 文件 平台。正如自述文件所说:

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

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

【讨论】:

  • 我没有从他们那里得到任何想法,你能解释一下他告诉他们什么吗?
  • 我已经下载了最新的 LWUIT zip 文件,但其中没有 LWUIT\ports 文件夹,也没有 UI.jar 文件。我该如何解决这个答案?
  • 你应该在这里从 SVN 下载 LWUIT 1.5:java.net/projects/lwuit/sources/svn/show 在那里你可以找到 UI 端口
  • 使用 lib 目录中的平台特定端口,并确保 UI 端口位于 IO 端口之前。您不需要 UI.jar,因为它的内容包含在平台特定的端口中。
  • 你能不能给我一个在netbean中工作的lwut的下载链接,或者告诉我如何从这个链接(SVN)下载java.net/projects/lwuit/sources/svn/show
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 2011-08-04
相关资源
最近更新 更多