为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法调试为什么我的 JavaFX 项目的可执行 JAR 在我的计算机上运行而不在其他计

有没有办法调试为什么我的 JavaFX 项目的可执行 JAR 在我的计算机上运行而不在其他计

桃花长相依 2022-12-21 15:11:07
我导出了一个 JavaFX2 项目的 Jar。它工作正常,但是当我在另一台机器上运行它时,会有一个 classDefNotFoundExeption: javafx.application.Application任何提示如何解决这个问题?这是我的清单:Class-Path: .Main-Class: proj.view.Launcher我还编写了启动 Swing GUI 的 Launcher,以防找不到 JavaFX。这是我的启动器类public class Launcher {    public static void main(String[] args) {        try {            Class c = javafx.application.Application.class;            proj.main.App.main(args);        }catch (NoClassDefFoundError e) {            String[] t = {"Swing Backup","Application start Error"};            MainFrame.remote(t);        }    }}
查看完整描述

4 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

其他计算机在不包含 JavaFX 的 Java 安装上运行。它可以在您的机器上运行,因为您确实安装了 JavaFX。


要测试是否javafx.application.Application可用,您需要使用反射,即


boolean hasJavaFX;

try {

    Class.forName("javafx.application.Application");

    hasJavaFX = true;

} catch (ClassNotFoundException e) {

    hasJavaFX = false;

}

if (hasJavaFX) {

    MainFrame.remote(new String[] {"Swing Backup","Application start Error"});

} else {

    proj.main.App.main(args);

}


查看完整回答
反对 回复 2022-12-21
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

我想通了:它是指向 JDK10 bin 的用户路径变量。

我们改变了路径。现在它适用于“java -jar programm.jar”但不适用于“java programm.jar”

但不是通过常规单击文件。但是我们写了一个批处理文件,用“java -jar”启动应用程序,它工作正常。

有没有人解释这种行为?


查看完整回答
反对 回复 2022-12-21
?
jeck猫

TA贡献1909条经验 获得超7个赞

当您在 jdk 高于 11 的机器上运行时,您可能会得到classDefNotFoundExeption: javafx.application.Application 。


oracle 已经从 JDK 11 中删除了 javaFX,因此需要提供对 javafx-controls 模块的依赖。


`<dependency>

    <groupId>org.openjfx</groupId>

    <artifactId>javafx-controls</artifactId>

    <version>12-ea+9</version>

</dependency>`

将此添加到您的依赖项中。


https://openjfx.io/


查看完整回答
反对 回复 2022-12-21
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

对我来说,如果相同的代码在那些机器上通过 IDE 运行,那么它看起来像是可运行的 jar 问题。您可以尝试使用 maven assembly 插件来打包您的 jar。


Apache Maven Assembly Plugin 允许用户将项目输出及其依赖项、模块、站点文档和其他文件聚合到一个可运行的包中。


<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-assembly-plugin</artifactId>

    <executions>

        <execution>

            <phase>package</phase>

            <goals>

                <goal>single</goal>

            </goals>

            <configuration>

                <archive>

                <manifest>

                    <mainClass>

                        package.your_main_class

                    </mainClass>

                </manifest>

                </archive>

                <descriptorRefs>

                    <descriptorRef>jar-with-dependencies</descriptorRef>

                </descriptorRefs>

            </configuration>

        </execution>

    </executions>

</plugin>


查看完整回答
反对 回复 2022-12-21
  • 4 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信