我试图从java-1.8迁移到java-11。我面临“缺少JavaFX应用程序类com.MainApp”的错误,我在网上寻找了一个解决方案,并找到了其中的几个:
https://openjfx.io/openjfx-docs/#modular
上面的方法是“创建一个新的main类并调用扩展应用程序的类的main方法”。
然而,我仍然面临以下问题:
我正在通过命令行运行它,并使用以下命令:
1.1.Java -jar abc.jar
线程"main“中的java.base/java.lang.ClassLoader.defineClass1(Native异常: javafx/application/Application at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) ( java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802) )在java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)在com.amx.rms.transporter.tools.config.MainDivert.main(MainDivert.java:7)引起的: java.lang.ClassNotFoundException: javafx.application.Application at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) . 10
2.java -模块-路径"C:\Program \Java\JavaFXSDK-11.0.2\lib“--add-module=javafx.Controls、javafx.fxml、javafx.base、javafx.media、javafx.web、javafx.swing -jar abc.jar
com.amx.rms.transporter.tools.config.MainDivert.main(MainDivert.java:7)线程"main“java.lang.NoClassDefFoundError: ch/qos/logback/core/Context中的
异常,原因是: java.lang.ClassNotFoundException: ch.qos.logback.core.Context at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)在java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) .再多1
下面是我的新主修班:
public class MainDivert {
public static void main(String[] args) throws Exception {
try {
MainApp.main(args);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
不知道我错过了什么?
发布于 2019-11-18 12:16:39
你的第二种方法看起来很有希望。您已经成功地添加了JavaFX模块。所以这起作用了。看起来,你有几个你依赖的小伙伴,比如logback。还必须将它们添加到类路径(或modulepath)中。
Gradle实际上可以为您管理所有的依赖项。您可以使用gradle run
启动应用程序。请参阅https://openjfx.io/openjfx-docs/#gradle
如果希望从命令行运行jar,则必须手动列出类路径(模块路径)中的所有依赖项。这会很痛苦的。
https://stackoverflow.com/questions/58913293
复制相似问题