我正在运行 MacOS Big Sur(Intel MacBook Pro 2020),并且正在将 eclips 用于大学项目。
该项目是用 java 编写的,对于 GUI,我使用 JFX。
使用 eclipse 时,包括 JavaFX 代码在内的所有内容都可以正常打开并运行。
当我将项目导出到可运行的 jar 时,它要求打开它,然后说有错误。
另一方面,当我使用 Windows 的 friend 导出到可运行的 jar 时,它对他们来说工作得很好。
项目git是Here to watch
我尝试运行它抛出终端来查看问题,并收到以下消息:
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文件夹下的library文件夹中。
检查您是否安装了 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 上,转到虚拟机文件夹: /库/Java/JavaVirtualMachines
并仅保留您使用的 1.8.X,这样它将成为默认版本。
也为我工作
关于java - 无法打开从 eclipse Mac OS 导出的可运行 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65680884/