2011-11-19 77 views
2

我創建了一個jar文件usign maven2的生成jar文件。我想用命令來運行jar文件:未能執行使用Java的罐子命令

java -jar sample.jar com.app.Test 

Test是由具有main方法的類。但我得到這個例外:

Exception in thread "main" java.lang.NullPointerException 
     at sun.launcher.LauncherHelper.getMainClassFromJar(Unknown Source) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 

任何人都可以幫我解決這個異常,並運行jar文件?

在此先感謝。

+0

是否包含在你的JAR清單文件,指定主類運行的格式?請參閱:http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest –

+0

也許清單文件被破壞?你能打開jar文件,並檢查主類是否在META-INF/Manifest中正確定義? – Thilo

+0

你可以在罐子外面運行它嗎? – pajton

回答

7

如果你想運行測試類,你應該使用

java -cp sample.jar com.app.Test 

這樣一來,你的jar添加到類路徑,然後運行指定的主類。

java -jar做什麼是它執行一個可運行jar文件(定義在清單文件中它自己的主類)。之後的任何參數都不會用於指定類,但最終會傳遞給傳遞給main方法的String數組。

所以,如果你有一個正確構造運行的JAR文件,它應該只是

java -jar sample.jar 
+0

感謝蒂洛,如何在建設罐子時指定清單文件入門級? – user972590

+0

'主類:com.app.Test' http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest – Thilo

+0

或者,使用Maven(也可捆綁在所有的依賴,這是你想要的東西):http://stackoverflow.com/questions/2022032/building-a-runnable-jar-with-maven-2 – Thilo