0

D:\jarConceptsディレクトリに単純な Demo.java ファイルがあります。

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) ;
    }
}

次のテキストを含む manifest.txt ファイルを D:\jarConcepts に用意しました。

メインクラス: デモ

クラスパス: C:\Program Files\MySQL\MySQL Tools for 5.0\java\lib\mysql-connector-java-5.0.4-bin.jar

いつ、私は同じディレクトリからjarファイルを作成します

jar -cvfm Demo.jar manifest.txt .class

以下は出力です:

追加されたマニフェストの追加: Demo.class(in = 743) (out= 505)(収縮 32%)

しかし、生成されたjarファイルを実行すると、エラーメッセージが表示され、

メインクラスを見つけることができませんでした。プログラムは終了します。

次のマニフェスト コードで jar ファイルを作成するときに、なぜこれが起こっているのかわかりません。

メインクラス: デモ

私は完全に実行可能な Demo.jar を取得しています。唯一の問題は、それが ] クラス パスから Driver クラスをロードしていないことと、マニフェストにパスを追加しようとしても機能しないことです... plzヘルプ.......

4

3 に答える 3

1

スペースは区切り文字として解釈され、エントリは相対的である必要があります。

http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Main%20Attributes

クラスパス:

この属性の値は、このアプリケーションまたは拡張機能が必要とする拡張機能またはライブラリの相対URLを指定します。URLは1つ以上のスペースで区切られます

于 2009-06-06T22:20:23.410 に答える
0

マニフェスト ファイルの Main-Class エントリと Class-Path エントリの間に改行がないことを確認してください。Class-Path エントリの後に改行があることも確認する必要があります。

また、デモをメイン クラスとして使用する場合は、パブリック クラスにすることをお勧めします。

于 2009-06-06T22:02:10.717 に答える
0

マニフェスト ファイルには、行の折り返しに関する規則など、かなり奇妙な規則がいくつかあるため、マニフェスト クラスパスに依存しないでください。

代わりに、コマンド ライン引数を使用してクラスパスを構築し、メイン クラス引数を使用してプログラムを呼び出します。java -cp Demo.jar:mysql-connector.jar Demo

于 2009-06-06T22:05:16.360 に答える