繁体   English   中英

JavaFX 作为 MavenDependency - jar 从 Oracle JDK 开始,但不在 openJDK 上

[英]JavaFX as MavenDependency - jar starts on Oracle JDK but not on openJDK

我即将完成我的硕士论文。 我开发的程序是一个 maven 项目,其中 javaFx 声明为依赖项

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-fxml</artifactId>
    <version>16-ea+4</version>
</dependency>

<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm-util</artifactId>
    <version>8.0.1</version>
</dependency>

 <dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-base</artifactId>
    <version>16-ea+4</version>
</dependency>

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>16-ea+4</version>
</dependency>   

当我使用 Maven-install 创建 jar 时,程序在 Oracle-JDK 上运行。 但在 openJDK 上,它会抛出 java.lang.ClassNotFoundException。

我的理解是,javaFX 不再包含在两个 JDK 中。 这就是为什么我要取消 maven 并构建具有所有依赖项的 jar 的原因。 这样它应该找到 javaFx 并启动程序,而不管使用的 JDK。

假设我的假设是正确的,该错误与 javaFX 有关。

为了编译我使用 JavaSE 13 的程序。它使用 Oracle JDK 15 完美运行。但它使用 openJDK 14 或 15 抛出 java.lang.ClassNotFoundException。

- -编辑 - -

我不确定此错误是否与 JavaFX 相关。

我正在控制台上启动 jar

java -jar "C:...\test.jar"

这适用于 OracleJDK,但不适用于 openJDK。 然后控制台打印:

Error: Could not find or load main class C:\...\test 
Caused by: java.lang.ClassNotFoundException: C:\...\test

我知道如何使用 IDE 打印堆栈跟踪。 但是在这种情况下是否可以使用控制台打印堆栈跟踪?

如果是这样,我会编辑这个问题以提供更多信息。

我会很感激你的帮助。 我慌了^^

您只是向我们提供了您设置的一些片段。 所以很难给出具体的建议。 据我所知,我会说您的程序无法在任何不包含 JavaFX 的 Java 上运行,因为您没有在启动命令中提供所需的 arguments。 在这里查看正确启动 JavaFX 的行之有效的方法: https://openjfx.io/openjfx-docs/

你有 MANIFEST.MF 文件吗? 它应该指向具有公共 static void main(String[] args) 方法<--您的主要方法的 class。

例子:

MANIFEST.MF

Manifest-Version: 1.0
Main-Class: classes.TestClass

有用的stackoverflow: 无法使用Jar文件找到或加载主class

https://taylorial.com/cs1021/Jar.htm#jarwithjavafxpackagesincluded

我的教授刚刚回复说这只是他的命令行中的一个错字。

它工作得很好。

我会在查看时间删除这个问题,因为它不是一个真正的问题。

非常感谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM