2014-02-22 137 views
1

好吧,我已經按照Java教程創建了一個JAR文件,甚至創建了與之相關的Manifest.txt。我非常困惑,我已經到了在命令提示符下運行JAR的地步,但它並不是指我在主程序中使用的其他課程。創建JAR文件並在命令提示符下使用?

我有兩個我正在使用的.class文件,javagame.classsound.class

它終於被加載主類,但是當它需要參考sound.class文件時,它是說,它不存在,一個NoClassDefFoundError

我做「罐子立方英尺myjar.jar Manifest.txt javagame。在命令提示符類sound.class'然後

jar cfe app.jar javagame javagame.class 

最後我做了java -jar app.jar運行JAR,我得到了上述在那裏找不到sound.class文件中的錯誤。

有人請幫助我很困惑。

+0

也許這兩個'class'es不在同一個位置(或文件夾)。看看我的答案...這很容易。 – Astrobleme

+0

更好地顯示您的Manifest.txt文件。 – Rembo

+0

你確定你的主類(javagame.java)實際上有一個'public static void main(String args [])'方法嗎?它必須有一個,否則它將無法工作。 – Astrobleme

回答

4

考慮的目錄結構爲您的.java & .class文件:

HelloWorld(root directory) 
    | 
    |\src\HelloWorld.java 
    | 
    |\classes\mypackage\HelloWorld.class 

HelloWorld.java會像

package mypackage; 

public class HelloWorld { 

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

編譯並獲得類的類文件夾使用-d選項in javac like:

F:\HelloWorld\src>javac -d ../classes HelloWorld.java 

添加你可以使用*的.java

要創建的HelloWorld的可執行的JAR從classes目錄執行以下命令的所有.java文件:jar命令後

F:\HelloWorld\classes>jar cfe HelloWorld.jar mypackage.HelloWorld mypackage/HelloWorld.class 

選項CFE手段:

  1. c:表示您要創建JAR文件。
  2. f:表示您希望輸出到文件而不是stdout。
  3. e:重寫清單的Main-Class屬性。


Finnaly,運行生成jar文件,執行以下命令:

F:\HelloWorld\classes>java -jar HelloWorld.jar 

輸出:HelloWorld的

假設,如果要指定自己的清單。MF文件,然後去

jar cfm MyJar.jar Manifest.txt mypackage/*.class 

1

這是很關閉您的要求,但儘管如此,它是得多,簡單得多。 我將演示如何使用BlueJ創建JAR文件。

  1. 打開BlueJ和包含所有代碼的項目。 (您可以 進口非BlueJ的:去項目打開非BlueJ的然後SELCT 包含代碼的文件夾。)enter image description here

  2. 轉到項目並選擇創建jar文件.. 。。選擇您的主類(這裏,對我而言,這是NumberSystems.java)。你可以自定義休息... enter image description here

  3. 保存文件... enter image description here

你就大功告成了!就如此容易。您現在可以從cmd執行此操作。

相關問題