2012-02-14 5 views
3

Можно создать дубликат:
You must include the platform port before the LWUIT in the classpath runtime exceptionВы должны включить порт платформы перед LWUIT в пути к классам: как решить это исключение времени выполнения?

Я только сейчас начал использовать LWUIT в J2ME. У меня больше нет знаний о LWUIT, но я знаю лучше J2ME. Я добавил библиотеку LWUIT в моей J2ME проекта, компилируется нормально, но во время выполнения он показывает ниже исключения:

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(); 
     } 
    } 
} 
+0

Я думаю, что код Мидлета не нужен, чтобы решить проблему. Опубликуйте свои project.properties, а более конкретно, свойство libs.classpath может быть полезно. – mdelolmo

ответ

2

Вы видели этот пост? You must include the platform port before the LWUIT in the classpath runtime exception

Я думаю, что это аналогичная проблема. Попробуйте решить эту проблему, как было предложено в ответе в указанном выше вопросе:

Проблема заключалась в том, что в банке пользовательского интерфейса я включил. LWUIT поставляется с 2 «наборы» от UI.jar. Общий тип, который находится в папке LWUIT \ UI и , специфичных для платформы, которые находятся в папке LWUIT \ Ports. Общий файл один используется как «родительский» проект, содержащий весь общий код , однако, если вы ДОЛЖНЫ импортировать .jar, который для вашей платформы . Как ридй файл говорит:

Хотя эти проекты будут компилировать легко они будут бесполезны для любых целей, так как они не включают связывающий клей для платформы, чтобы использовать платформу нужно использовать соответствующие проектов под определенным каталогом портов для данной платформы.

В то время как я перекомпиляция библиотеки, чтобы удалить Transitions3D.java файла, я перекомпиляция (а затем импортировать) общий UI.jar. Правильная вещь, которую нужно сделать, это компиляция, родительский проект (generic UI.jar). Затем компилируйте специфичную для порта библиотеку (в моем случае LWUIT \ ports \ MIDP \ UI.jar), а затем импортируйте ее в свой проект, и вы выполнены.

+0

Я не получил от них никакой идеи, не могли бы вы объяснить мне, что он сказал им? –

+0

Я загрузил последний файл LWUIT zip, но в нем их нет, как папка LWUIT \ ports и файл UI.jar. Как я могу решить этот ответ? –

+0

Вы должны скачать LWUIT 1.5 из SVN здесь: http://java.net/projects/lwuit/sources/svn/show Там вы можете найти порты интерфейса – Mun0n