2016-04-04 55 views
1

我一直在試圖運行從jar文件的工具軟件,但它一直打印出來:Jar文件無法加載或找到主類

「無法找到或加載主類...」。

我試圖解決這個問題,使用這個thread的信息,但似乎都是無用的。說實話,因爲這是一個微不足道的問題,我越來越絕望。

不管怎麼說,我所做的:

Main-Class: com.test.Test 

我的清單屬性:

jar cfm test.jar manifest.txt <full_path>/out/com/test/*.class 

這是什麼打包成jar文件(該文件的Test.class)

測試等級:

package com.test; 

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello World"); 
    } 
} 
+3

你是如何試圖調用它的? – KevinO

+3

它看起來並沒有正確打包你的jar(你不保留文件夾結構)。我想你想'jar cfm test.jar manifest.txt /out /' –

+0

然後用'java -jar'或'java -cp'運行它嗎? – fukanchik

回答

1

您應該正確包裝類。做

jar cfm test.jar manifest.txt com/test/*.class 

在文件夾的父文件夾中com。通過提供絕對路徑(您所做的方式),類文件打包錯誤。

+0

或者使用'-C'作爲http://stackoverflow.com/a/18972208/2868801。另外,當你只需要清單中的Main-class,你就可以使用'-e'和classname來代替'-m'和清單文件。 –

+0

@ dave_thompson_085這是一個很好的建議,但OP的問題是該類沒有正確打包。簡單地改變班級的路徑(到相對的班級)就足夠了,其他一切都保持不變。 –

+0

改變完整的相對路徑沒有工作Kedar和@ThierryB – Wecherowski

1

首先,爲了防止使用Eclipse IDE,可以使用一些工具,如Fat Jar Plugin,它們可以幫助您打包構建。其次,有Maven來處理你的依賴關係,並且用一切正常的方式構建你需要的包。在你的情況下,我會尋找Apache Maven Jar Plugin

最後,舊學校的方式與命令行一樣,你試圖去做。 正如Eliott Frisch在您的問題評論中所說的,您無需爲您的jar cfm test.jar manifest.txt <full_path>/out/中的主類提供完整路徑。 而這是因爲manifest.txt已經提供了包信息!

相關問題