2015-06-30 122 views
1

我在eclipse中構建了一個Java項目。它在eclipse中運行良好。我之前已經將它作爲jar導出,並且工作正常。不過,自從上次出口以來已經有一段時間了。這一次,當我輸出並點擊jar時,什麼都沒有發生。從eclipse導出jar不起作用

在命令行中運行它揭示了以下錯誤:

C:\>java -jar "C:\Users\Quinn\Desktop\think.jar" 
Exception in thread "main" java.lang.IllegalAccessException: Class org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader can not access a member of class think.Main with modifiers "public static" 

這個錯誤是什麼意思?有什麼理由可以發生這種情況嗎?我一直無法在網上找到任何提及。

非常感謝。

編輯: 當我解壓的jar,內容是這樣的: enter image description here

清單(在META-INF)看起來是這樣的:(是的,它有一個額外的空行)

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ substance-6.1.jar trident.jar 
Class-Path: . 
Rsrc-Main-Class: think.Main 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 
+0

我很困惑,在從命令行運行時,如何涉及eclipse類'org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader'。你有什麼想法是怎麼回事?另外,您是否可以解壓縮您的jar並向我們展示存檔的結構? – thatidiotguy

+0

Eclipse JDK和系統jdk不同,我猜這裏。請檢查 – Bhupi

+0

老實說,我也對此感到困惑。我從未指定明確使用org.eclipse中的任何內容。我現在正在開箱拆箱,並且很快就會有這個功能 – B1CL0PS

回答

1

當您使用Export> Runnable JAR文件時,JarRsrcLoader包含在Jar中。它處理jar中的嵌套jar文件。

JarRsrcLoader試圖找到自己的think.Mainmain方法,但不能找到一個名爲main方法是public static

0

嗯,這很尷尬。事實證明,雖然我的主要方法是public static,但包含的類不是公開的。現在一切都已修好:)