4 回答
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);
}
TA贡献1858条经验 获得超8个赞
我想通了:它是指向 JDK10 bin 的用户路径变量。
我们改变了路径。现在它适用于“java -jar programm.jar”但不适用于“java programm.jar”
但不是通过常规单击文件。但是我们写了一个批处理文件,用“java -jar”启动应用程序,它工作正常。
有没有人解释这种行为?
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/
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>
添加回答
举报