从终端运行JavaFX时出错-无法找到或加载主类

从终端运行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应用程序可以工作 我

需要一些聪明的建议来解决这个问题——好吧,在使用简单的JavaFX应用程序时会遇到一些问题。 然而,在设置所有文件时(例如,模块路径)出现了一些问题,但现在当我无法从终端运行.jar文件时,该怎么办呢?好的,开始用javafx谈论不可能完成的任务:

我在LinuxMint20上安装了ApacheNetbeans12。JDK已经安装,所以“java-version”返回“openjdk版本”11.0.7“2020-04-14”。。。 当启动项目时,一点问题都没有——JavaFX应用程序可以工作

我需要这个应用程序在Windows8.1上运行,但在此之前,我尝试在linux终端上使用
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项目)

  • 错误解决方案:无法找到或加载主类mypackage。这条线 您在这个位置/src/main/java/YOUR_PACKAGE_NAME/main.java创建了main类,所以在创建jar文件时,如果您在上面的位置创建了main类,并且它没有添加main类,intellij就不会关心您的main类:main清单文件中的这一行解决方案是再创建一个main类(不要删除Main.Java类,我们在新的一个Main类中使用这个类)在这个位置/src/Main/Java/EntryPoint.Java请参见下面的图片和代码
  • }

    Main.java映像

  • 为Jar文件创建EntryPoint.java(新的主类)清单文件后,在创建Jar文件期间(在构建Jar之前),单击Cntr+Alt+Shift+S创建清单文件| Jar文件
    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);
     }