2009-06-06 56 views
0

我在d簡單Demo.java文件:\ jarConcepts目錄:將罐子到您的程序

import javax.swing.* ; 

class Demo{ 
    public static void main(String args[]){ 
     JFrame frame = new JFrame("") ; 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE) ; 

     Class c = null ; 
     try{ 
      c = Class.forName("com.mysql.jdbc.Driver") ; 

      //com.mysql.jdbc.Driver class is in a jar file 
      //whose class path is set in the environment variable(explicitly done by me) 

      //when i am executing Demo.class using java command, it displays frame with OK title 
      //but if i execute this by creating a jar, it enables to load the 
      //com.mysql.jdbc.Driver class, 
      //thus displaying frame with Sorry title 

      frame.setTitle("OK") ; 
     } 
     catch(ClassNotFoundException cnfe){ 
      frame.setTitle("Sorry") ; 
     } 

     frame.setVisible(true) ; 
    } 
} 

我準備在d一個manifest.txt文件:用以下文字\ jarConcepts:

主類:演示

類路徑:C:\ Program Files文件\的MySQL \ MySQL的工具5.0 \的java \ lib中\ MySQL的連接器的Java-5.0.4-bin.jar

的情況下,我創建使用

罐子-cvfm Demo.jar添加manifest.txt的.class

按照相同的目錄中的jar文件的輸出:

加入清單 添加:Demo.class(in = 743)(out = 505)(泄氣32%)

但是,當我執行生成的jar文件時,它顯示一條錯誤消息,

找不到主類。程序將會退出。

我不明白爲什麼會這樣,怎麼,當我用下面的清單的代碼創建jar文件:

主類:演示

我得到一個完美的可執行文件Demo.jar,唯一的問題是,它不是加載從類的路徑] 類路徑,當我試圖在清單中添加路徑,它不工作...... PLZ幫助... ...

回答

0

確保Main-Class和Class-Path條目之間的清單文件中沒有換行符。您還應該確保在Class-Path條目後面有一個換行符。

另外,我會建議Demo是一個公共類,如果它被用作主類。

+0

那麼爲什麼jar文件執行時,當我只使用主類的標籤,而不是使用兩個 主類,類路徑標籤...... – mogli 2009-06-06 22:05:11

0

您不應該依賴清單類路徑,因爲清單文件有一些漂亮的strange rules,包括換行符。

相反,使用命令行參數構建一個類路徑和使用主類參數java -cp Demo.jar:mysql-connector.jar Demo

+0

這是一個長長的名單爲不同的目的.... 將u plz告訴我唯一的文本,我必須寫在manifest.txt 使我的框架可見與標題確定.... – mogli 2009-06-06 22:08:55

+0

正如我所說,我只能建議建立類路徑與'java -cp',而不是Manifest。 – 2009-06-06 22:18:02