上周,我在测试应用程序上完成了开发,并在所有模拟器中成功运行。 今天我决定考虑发布应用程序并使用" Sent Android Build"。建立状态"成功"。 然后尝试从命令行运行jar并得到:
peter@PeteSuse:~> 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版:
peter@PeteSuse:~> 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)
我在Suse Linux 42.1 64b上使用Netbeans(新的)。
我在某个地方丢了一个图书馆吗?或其他什么?
答案 0 :(得分:1)
谢谢你们。我通过将jfxrt.jar添加到NetBeans中的库来修复此问题。
答案 1 :(得分:0)
有关为什么默认情况下OpenFDK发行版中没有JavaFX可用的信息,请参阅:JavaFX and OpenJDK。
我不知道codenameone或知道它是如何工作的。可能无论它是什么,你都可以要求创建者将它们的东西打包为self-contained application,这样它就会附带一个兼容的Java运行时,它会(可能)避免你遇到的问题。不知道codenameone,我不知道这是否有意义。
我也不知道你原来ArrayIndexOutOfBoundsException
的原因,因为这看起来是代号的内部或你对它的使用。
关于NetBeans,您可能需要set the Java platform安装JavaFX(如果您的计算机上安装了多个Java平台)。
答案 2 :(得分:0)
您可以通过按IDE中的播放按钮在模拟器中运行Codename One应用程序。它不会从命令行为你工作,因为应用程序不应该有main()方法,所以不应该这样做。
您可以使用以下命令从命令行执行Codename One模拟器:
java -jar JavaSE.jar:dist/MyApp.jar
请注意,这假设您的项目是工作目录。