0

MainJPrint.java ファイルにある次のクラスを作成しました

import com.XXXXX.pdfPrint.PDFPrint;

public class MainJPrint
{
   public static void main(String[] args) 
    { 
        //System.out.println("Hello World!"); 
        print(".....");
    }   
    public static String print (final String url)
    {
        Object rc = AccessController.doPrivileged(new java.security.PrivilegedAction() 
        {
            public Object run()
            {
                 ...
            }
         }
    }
}

同じフォルダーに、jar アーカイブjPrint.jar があります。次のコマンドを使用してクラスをコンパイルします。

>javac -classpath jPrint.jar MainJPrint.java

結果のクラス ファイルを実行しようとすると、次のエラーが発生します。

>java MainJPrint    

 java.lang.NoClassDefFoundError: com/XXXXX/pdfPrint/PDFPrint

Hello World 行のコメントを外し、次の行をコメントにすると、プログラムは正常に実行されます。

にインストールされている j2sdk1.4.2 を使用していC:\j2sdk1.4.2ます。他の Java バージョンもインストールしました (C:\Program Files\Java: jre 1.6.0_01、jre 1.6.0_02、j2re1.4.2、jre6、jre7、jdk1.7.0_03)。

PATH変数にはC:\j2sdk1.4.2\binパスが含まれていますが、java.exeは上位バージョンからロードされていると思いますが、問題ではなく、次のように呼び出すことができます

>C:\j2sdk1.4.2\bin\java.exe MainJPrint

jPrint.jar はサード パーティのアーカイブであり、メソッドを公開するアプレットを作成して、javascript で呼び出すことができるようにする必要があります。私は Java 開発者ではありません。ちょっとした問題があり、本当にここで終わりです。

次のような他のオプションを試しました:

>java MainJPrint -cp .
>java MainJPrint -cp jPrint.jar

では、別のアーカイブにあるクラスを使用するクラス ファイルを実行するにはどうすればよいでしょうか。

4

1 に答える 1

1

外部 JAR に依存するクラスを実行するには、コマンド ラインでクラスパスのすべての要素を指定する必要があります。

クラスパスを指定しない場合、Java は自動的に.(現在のディレクトリ) を使用します。そのため、MainJPrint が jPrint.jar に依存していなければ、呼び出しjava MainJPrintは機能していたはずです。

ただし、 を指定する-cp jPrint.jarと、Java は現在のディレクトリをクラスパスに自動的に追加しません。つまり、MainJPrint を見つけることができません。両方を指定する必要があります。Mac/* nix では、次の呼び出しが機能するはずです。

java -cp jPrint.jar:. MainJPrint

または Windows の場合:

java -cp jPrint.jar;. MainJPrint
于 2012-05-04T12:16:10.310 に答える