【发布时间】:2021-04-17 05:21:56
【问题描述】:
我正在运行 MacOS Big Sur(Intel MacBook Pro 2020),并且我正在将 eclips 用于大学项目。
该项目是用 java 编写的,对于 GUI,我使用的是 JFX。
使用 Eclipse 时,包括 JavaFX 代码在内的所有内容都可以正常打开并运行。
当我将项目导出到可运行的 jar 时,它会要求打开它,然后说出现错误。
另一方面,当我使用 windows 的朋友正在导出到可运行的 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,所以我无法真正找到问题。
【问题讨论】:
-
java -version给你什么?因为该堆栈跟踪包含模块名称,并且模块直到 Java 9 才存在。 -
rafaelelkoby@MacBook-Pro ~ % java -version java version "15.0.1" 2020-10-20 Java(TM) SE Runtime Environment (build 15.0.1+9-18) Java HotSpot( TM) 64 位服务器 VM(内部版本 15.0.1+9-18,混合模式,共享)
-
你去。您正在尝试使用通常不包含 JavaFX 的 Java 15.0.1 执行 JAR。您必须安装两个或更多版本的 Java。
-
我该怎么做?有没有办法使用 java 8?
-
“蛮力”方法是在执行命令时提供 Java 8 的完整路径,而不仅仅是
java。至少这是 Windows 上的一个选项。如果您希望 Java 8 成为默认设置,则必须研究如何在 MacOS 上执行此操作(我只知道 Windows)。
标签: java eclipse macos javafx-8