簡體   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