从终端运行JavaFX时出错-无法找到或加载主类
需要一些聪明的建议来解决这个问题——好吧,在使用简单的JavaFX应用程序时会遇到一些问题。 然而,在设置所有文件时(例如,模块路径)出现了一些问题,但现在当我无法从终端运行.jar文件时,该怎么办呢?好的,开始用javafx谈论不可能完成的任务: 我在LinuxMint20上安装了ApacheNetbeans12。JDK已经安装,所以“java-version”返回“openjdk版本”11.0.7“2020-04-14”。。。 当启动项目时,一点问题都没有——JavaFX应用程序可以工作 我需要这个应用程序在Windows8.1上运行,但在此之前,我尝试在linux终端上使用从终端运行JavaFX时出错-无法找到或加载主类,javafx,attributes,manifest,executable-jar,noclassdeffounderror,Javafx,Attributes,Manifest,Executable Jar,Noclassdeffounderror,需要一些聪明的建议来解决这个问题——好吧,在使用简单的JavaFX应用程序时会遇到一些问题。 然而,在设置所有文件时(例如,模块路径)出现了一些问题,但现在当我无法从终端运行.jar文件时,该怎么办呢?好的,开始用javafx谈论不可能完成的任务: 我在LinuxMint20上安装了ApacheNetbeans12。JDK已经安装,所以“java-version”返回“openjdk版本”11.0.7“2020-04-14”。。。 当启动项目时,一点问题都没有——JavaFX应用程序可以工作 我
java-jarmyfile.jar
运行这个.jar文件。
问题从这里开始:它说在MyFile.jar中没有主清单属性。
然后我决定直接在jar文件中设置主类(使用归档管理器打开):
MyFile.jar->META-INF->MANIFEST.MF并添加到最后一行:Main类:mypackage.MyClass
现在我有:错误:无法找到或加载主类mypackage.MyClass,原因是:java.lang.NoClassDefFoundError:javafx/application/application
好的,怎么做,为什么
我只是想说,在NetBeans中,我还设置了main类:
项目->属性->运行->主类:mypackage.MyClass
在VM选项中,我添加了:
--模块路径“/locationToJavaFX/javafx-sdk-11.0.2/lib”--添加模块javafx.controls,javafx.fxml
在pom文件中,还设置了主类(由IDE生成):
我只是想澄清一下——我可能已经尝试了stackoverflow上的所有可用功能(我不算)。我昨天和今天(几乎整整两天)都试图解决这个问题,但我做不到
只是想一想:Java编程并不像配置那样困难。
干杯,谢谢你的帮助
编辑:
我只是想说,我尝试了José所做的:首先创建launcher类,一步一步地遵循“FatJar”,然后运行他添加到帖子中的“semi-FatJar”命令。有趣的是,这个return me:错误发生在启动层java.lang.module.FindException的初始化过程中:未找到模块javafx fxml
。如果我像上面提到的那样定义JavaFXML,为什么不找到它呢?另外,为什么Netbeans不在清单(jar)文件中为我提供主类?当我在清单中添加main类时,我得到以下结果:
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at Main.main(Main.java:5) Caused by: java.lang.ClassNotFoundException: javafx.application.Application
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:522)
... 10 more
好的,如何找不到应用程序?:)
编辑2:
是的,何塞先生有权利。在他的“semi-fat-jar”帖子中的这个命令实际上是有效的,但对Maven来说不是(我在同一个Ant项目中使用它,它也有效)。Maven不知何故无法识别JSoup类(即使我将其添加到依赖项中),java返回:
Exception in Application start method Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NoClassDefFoundError: org/jsoup/Jsoup
at p.eis.GetData1.startIt(GetData1.java:34)
at p.eis.GetData1.<init>(GetData1.java:28)
at p.eis.SampleController.initialize(SampleController.java:37)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at p.eis.Start.loadFXML(Start.java:32)
at p.eis.Start.start(Start.java:19)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
... 1 more Caused by: java.lang.ClassNotFoundException: org.jsoup.Jsoup
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:522)
... 17 more
应用程序启动方法中的异常线程“main”中的异常java.lang.RuntimeException:应用程序启动方法中的异常
位于javafx.graphics/com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:900)
在javafx.graphics/com.sun.javafx.application.LaunchImpl.lambda$launchApplication$2(LaunchImpl.java:195)
在java.base/java.lang.Thread.run(Thread.java:834)处,由以下原因引起:java.lang.NoClassDefFoundError:org/jsoup/jsoup
在p.eis.GetData1.startIt(GetData1.java:34)
在p.eis.GetData1.(GetData1.java:28)
初始化(SampleController.java:37)
位于javafx.fxml/javafx.fxml.fxmloader.loadImpl(fxmloader.java:2573)
位于javafx.fxml/javafx.fxml.fxmloader.loadImpl(fxmloader.java:2466)
位于javafx.fxml/javafx.fxml.fxmloader.load(fxmloader.java:2435)
在p.eis.Start.loadFXML(Start.java:32)
在p.eis.Start.Start(Start.java:19)
在javafx.graphics/com.sun.javafx.application.launchempl.lambda$launchApplication1$9(launchempl.java:846)
在javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
在javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
位于java.base/java.security.AccessController.doPrivileged(本机方法)
位于javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
位于javafx.graphics/com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:96)
在javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.\u runLoop(本机方法)
在javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
... 1更多原因:java.lang.ClassNotFoundException:org.jsoup.jsoup
位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 还有17个
希望我能在不久的将来找到Maven项目的解决方案。是的,我注意到你使用了Maven,但这不是Maven的错,我知道为什么会发生这种情况,我有解决方案,所以在我的解决方案中有魔力,工作正常,因为我使用我的解决方案使jar,你知道我的jar文件在没有终端的情况下运行(意味着双击jar文件) 解决方案 你需要winRar,因为我用它来读取我的解决方案 只需按照下面的步骤运行jar(maven和gradle项目)
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at Main.main(Main.java:5) Caused by: java.lang.ClassNotFoundException: javafx.application.Application
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:522)
... 10 more
Exception in Application start method Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NoClassDefFoundError: org/jsoup/Jsoup
at p.eis.GetData1.startIt(GetData1.java:34)
at p.eis.GetData1.<init>(GetData1.java:28)
at p.eis.SampleController.initialize(SampleController.java:37)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at p.eis.Start.loadFXML(Start.java:32)
at p.eis.Start.start(Start.java:19)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
... 1 more Caused by: java.lang.ClassNotFoundException: org.jsoup.Jsoup
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:522)
... 17 more
public class EntryPoint {
public static void main(String[] args) {
smartSeizeing.Main.main(args);
}