2012-07-08 117 views
0

在文件夾~/code/我有 bin/ src/ lib/ 甲manifest.txt在〜/創建與所述內容:創建命令行可運行罐子

Main-class: test.MyMainClass 
Class-Path: lib/*.jar 

然後在〜我用命令

jar cfm d.jar manifest.txt code/

然後我運行

java -jar d.jar

它說

Exception in thread "main" java.lang.NoClassDefFoundError: test/MyMainClass Caused by: java.lang.ClassNotFoundException: test.MyMainClass

+0

可能重複[Java:在命令行中運行jar文件的問題](http://stackoverflow.com/questions/945962/java-problem-running-a-jar-file-in-command-line ) – 2012-07-08 21:51:31

回答

3

爲什麼你收拾箱子,SRC和lib?你需要打包編譯的類。

I.e.首先,編譯你的項目。你會得到一些類目錄。去那個目錄,並用jar打包這些文件。

然後,你需要有META-INF/MANIFEST.MFMain-class: ...

檢查這個漂亮的文章 - 最後一章。 http://www.skylit.com/javamethods/faqs/createjar.html


如果這是您使用Java玩的第一次,這是很好的學習的基礎知識 - 如何在的.jar文件被組織等

可是後來,當建設是高效的,我建議你使用Maven。 http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

+0

只是因爲有人建議學習像Maven這樣強大的工具,而不是毫無理由地做這種繁瑣繁忙的工作。 – 2012-07-08 21:52:19

+0

你的回答是對的,但我認爲它可能會混淆OP。如果他已經擁有'bin /'目錄 - 編譯過的類位於'bin /'中,他不需要「編譯項目」來「獲取某些類目錄」。 – Edward 2012-07-08 22:14:41

+0

@愛德華你怎麼知道的? – 2016-11-29 07:38:39