在IDE中运行应用程序停止工作
问题描述:
上周我完成了测试应用程序的开发并在所有模拟器中成功运行。 今天,我决定看看发布应用程序,并使用“发送Android构建”。构建状态“成功”。 然后在命令行中尝试运行罐子,并得到:在IDE中运行应用程序停止工作
[email protected]:~> java -jar "/home/peter/NetBeansProjects/mobile-apps/pGame/dist/pGame.jar"
java.lang.ArrayIndexOutOfBoundsException: 0
at com.codename1.impl.javase.Executor$1.run(Executor.java:84)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
所以试图从GUI运行,并得到了:
run:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javafx/embed/swing/JFXPanel
at com.codename1.impl.ImplementationFactory.createImplementation(ImplementationFactory.java:69)
at com.codename1.ui.Display.init(Display.java:566)
at com.codename1.impl.javase.Executor$1.run(Executor.java:112)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
Java版本:
[email protected]:~> java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (IcedTea 3.3.0) (suse-23.1-x86_64)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
我使用NetBeans(新到Suse Linux 42.1 64b)。
我在某处丢失了图书馆吗?或者是其他东西?
答
请参阅:JavaFX and OpenJDK了解为什么JavaFX在您的OpenJDK发行版中默认不可用。
- 如果你的Linux发行版,使提供一个开放的JavaFX包(如Ubuntu的作用:Why is JavaFX is not included in OpenJDK 8 on Ubuntu Wily (15.10)?),那么你可以使用它。
- 否则你可以build from source(为冒险的牦牛剃须刀)。
- 或者,最简单的就是Oracle Java distribution。
我不知道codenameone或有什么想法,它是如何工作的。可能无论它是什么,你都可以让创作者将他们的东西打包为self-contained application,这样它就可以与兼容的Java运行时一起运行,从而可以(可能)避免遇到的问题。不知道codenameone,我不知道这是否有意义。
我也不知道你原来的ArrayIndexOutOfBoundsException
的原因,因为它看起来像codenameone或你的使用内部。
至于NetBeans中,您可能需要set the Java platform一个JavaFX的安装(如果你有在计算机上安装多个Java平台)。
答
您可以通过按下IDE中的播放按钮在模拟器中运行Codename One应用程序。它不适用于你的命令行,因为应用程序不应该有main()方法。
可以使用从执行命令行的代号一个模拟器:
java -jar JavaSE.jar:dist/MyApp.jar
声明本假定你的项目的工作目录。
答
谢谢你们。我通过将jfxrt.jar添加到NetBeans中的库中解决了该问题。