当前位置: 首页 > 知识库问答 >
问题:

JavaFX 11 jar不可执行java.lang.noClassDefFounderRorr:JavaFX/application/application

卢涵畅
2023-03-14
Error: Could not find or load main class 
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
--module-path %PATH_TO_FX%
--add-modules javafx.controls,primary.fxml
java.lang.module.FindException: Module javafx.controls not found
Command execution failed.

    cd C:\Users\TCN\Documents\NetBeansProjects\testJavaFX; 
"JAVA_HOME=C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot" cmd /c "\"
C:\\Program Files\\NetBeans-12.2\\netbeans\\java\\maven\\bin\\mvn.cmd\" 
-Dexec.args=\"--module-path \\\"C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib\\\" 
--add-modules javafx.controls,javafx.fxml -classpath %classpathtestJavaFX.java 
-classpath %classpath testJavaFX.java 
-classpath %classpath javafx.controls ,primary.fxml 
-classpath %classpath javafx.controls ,javafx.fxml 
-classpath %classpath javafx.controls 
-classpath %classpath javafx.controls testJavaFX.java 
-classpath %classpath com.tradeconnex.testjavafx.App\" 
-Dexec.executable=\"C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot\\bin\\java.exe\" 
-Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans-12.2\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" 
-Dfile.encoding=UTF-8 
-Prelease-profile process-classes org.codehaus.mojo:exec-maven-plugin:3.0.0:exec"

The syntax of the command is incorrect.

我在Mac和Windows机器上都尝试了这个,结果是一样的。

我猜程序找不到JavaFX。

我的JDK是jdk-11.0.11.9-hotspot

在我安装了JDK11之后,我以前的jdk8 javafx项目现在也不会运行了。

我尝试将maven中的所有javafx JAR添加到我的POM中,同样,我只能从NetBeans中运行它。

同样,来自JDK8和JDK11的应用程序在NetBeans中都运行良好,但都不能从jar或Shell中运行。以前可以执行的jdk8中的旧JavaFX JAR现在不是了。

请问有人有解决办法吗?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>testJavaFX</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>testJavaFX</name>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <javafx.version>11</javafx.version>
    <mainClass>com.company.testjavafx.App</mainClass>
</properties>
<dependencies>
    <!--        <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx</artifactId>
        <version>13.0.2</version>
        <type>pom</type>
    </dependency>-->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-media</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>11.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>11.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>11.0.2</version>
    </dependency>

</dependencies>
<build>
    <finalName>testJavaFX</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack-dependencies</goal>
                    </goals>
                    <configuration>
                        <excludeScope>system</excludeScope>
                        <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds>
                        <outputDirectory>${project.build.directory}/classes</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>com.company.testjavafx.App</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.4</version>
            <configuration>
                <mainClass>com.company.testjavafx.App</mainClass>
            </configuration>
            <executions>
                <execution>
                    <!-- Default configuration for running -->
                    <!-- Usage: mvn clean javafx:run -->
                    <id>default-cli</id>
                </execution>
                <execution>
                    <!-- Configuration for manual attach debugging -->
                    <!-- Usage: mvn clean javafx:run@debug -->
                    <id>debug</id>
                    <configuration>
                        <options>
                            <option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000</option>
                        </options>
                    </configuration>
                </execution>
                <execution>
                    <!-- Configuration for automatic IDE debugging -->
                    <id>ide-debug</id>
                    <configuration>
                        <options>
                            <option>-agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address}</option>
                        </options>
                    </configuration>
                </execution>
                <execution>
                    <!-- Configuration for automatic IDE profiling -->
                    <id>ide-profile</id>
                    <configuration>
                        <options>
                            <option>${profiler.jvmargs.arg1}</option>
                            <option>${profiler.jvmargs.arg2}</option>
                            <option>${profiler.jvmargs.arg3}</option>
                            <option>${profiler.jvmargs.arg4}</option>
                            <option>${profiler.jvmargs.arg5}</option>
                        </options>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

共有1个答案

葛念
2023-03-14

相反,您可以将所有javafx模块作为maven依赖项加载,并使用一个Launcher类扩展主类并执行主函数。我已经写了一整篇关于这个的媒体文章。去看看。

 类似资料:
  • Java:jdk12 构建工具:Maven IDE:Eclipse OS:Windows 我有一个简单的java FX 11代码,它显示一个简单的空白屏幕。我已经使用eclipse部署了一个可执行的jar。当我使用CMD给出以下命令时,它工作正常: 可以看出,我需要在执行JAR文件时提供模块。 如果我们跳过这一步,我们会得到JAR直接执行错误: 因为我已经尝试使用maven作为: ---马文·波姆

  • 当我试图将我的项目导出到可执行的。jar文件时,像hibernate.cfg.xml或log4j-properties这样的配置文件不会导出到JAR中。我必须手动将它们添加到存档中。文件位于项目根文件夹中的/target/文件夹中。 如何让Eclipse也导出配置文件?

  • 我有我的chromedriver和chromedriver。项目文件夹中的exe权限。我正在用这段代码创建驱动程序的实例。 在本地windows上也可以(如果我们将“chromedriver”更改为“chromedriver.exe”),但当我在CentOS上运行它时,会收到错误消息:“驱动程序不可执行”。

  • 我有一个使用spring Boot1.4.2和CXF JAXR的项目设置。我想把Spring引导执行器添加到项目中。这是我添加到项目中的配置。 在此之后创建一个WAR文件,然后将其部署在外部tomcat服务器中。但是当我访问健康URL localhost:8080/management/health时,它给出的是404 HTTP代码。服务器正常启动,我可以看到包含以下详细信息的日志: 运行状况配置

  • 我在Eclipse中有一个maven项目。在src/main/resources下,我有一个名为“directoryToCopy”的目录,其中包含文件。一旦我运行了我的项目,我想将“directoryToCopy”复制到桌面上的本地目录“localDirec”下。 我用了这个: 这在本地工作正常,但是当我想将其作为可执行jar文件运行时,我会得到NullPointerException。 请问有什

  • 我在Netbeans IDE 8.0.1中编写了一个名为SampleChat的Java GUI程序,并使用“Clean and Build”函数创建了一个jar文件。 我转到Netbeans创建的'dist'目录,双击它生成的jar文件。打开一个cmd窗口,其行如下: 我打算从一个U盘共享程序,所以它是至关重要的,唯一的要求是一个JVM,鼠标,也许一些手指来双击它。 我想出的一个尴尬的解决方案是编