繁体   English   中英

不会打开从 eclipse Mac OS 导出的可运行 jar

[英]Won't open runnable jar exported from eclipse Mac OS

我正在运行 MacOS Big Sur(英特尔 MacBook Pro 2020),并且正在将 eclips 用于大学项目。

该项目是用 java 编写的,对于 GUI,我使用的是 JFX。

在使用 eclipse 时,包括 JavaFX 代码在内的所有内容都可以正常打开并运行。

当我将项目导出到可运行的 jar 时,它要求打开它,然后说有错误。

另一方面,当我使用 windows 的朋友正在导出到可运行的 jar 时,它对他们来说工作正常。

git项目在这里观看

我尝试运行它抛出终端以查看问题,并收到以下消息:

 rafaelelkoby@MacBook-Pro ~ % java -jar Server.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:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:514)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:422)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:416)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:415)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:468)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:59)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 13 more

使用 java 8 JDK 应该包含 JFX,所以我真的找不到问题。

因此,在评论中来自 Slaw 的帮助之后,我发现了问题以及如何解决它。

我的问题是我试图使用 Java 15.0.1 女巫执行 jar 文件,但它不适用于 JavaFX。

首先检查您是否安装了 Java 8 JDK。

并在 Mac 中找到虚拟机文件夹,默认情况下位于 java 文件夹下的库文件夹中。

检查您是否安装了 1.8 版本

然后通过命令查看执行jar的java版本是什么:

java -version

然后,如果它不同,则 java 8 运行以下命令:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

然后再次运行并检查您是否正在使用 java 8

java -version

检查它是否已更改并运行您是 jar 使用

java -jar JarName.jar 

如果有什么不清楚的地方请评论,我会修改的。

希望我对你有帮助:)

========================================

另外的选择:

如果您的代码使用的是 java 8

如果java -version告诉您您使用的是不同的东西,那么 1.8.X

在 MacOS go 上到 /Library/Java/JavaVirtualMachines 的虚拟机文件夹

并仅保留您使用的 1.8.X,因此它将成为默认值。

也为我工作

暂无
暂无

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

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