1

NetBeans で新しい J2SE プロジェクトを作成し、IDE から実行できますが、コマンド ラインで Ant を使用して実行しようとすると、次の問題が発生します。

<中略>

run:
     [java] Exception in thread "main" java.lang.NoClassDefFoundError: IndexBuilder
     [java] Java Result: 1

<中略>

以下のスニペットに基づいてproject.properties、クラスが見つかるはずです。

run.classpath=\
    ${javac.classpath}:\
    ${build.classes.dir}

これを修正するにはどうすればよいですか?

4

5 に答える 5

1

表示されるエラーは、次のいずれかに該当することを意味します。

  • クラスIndexBuilderパスでクラスが見つかりません
  • 必要な (クラスのロードに) の依存関係がIndexBuilderクラスパスに見つかりません

つまり、クラスをロードするときに、クラスは見つかる可能性ありますが、クラスの重要な依存関係が見つからない可能性があります。たとえば、IndexBuilder別のクラスを拡張し、その基本クラスがクラスパスで見つからない場合、このエラーが発生します。別の例はIndexBuilder、静的初期化子でクラスを使用し、そのクラスが見つからない場合です。

クラスパスだけでなく、依存するIndexBuilderものについても確認してください。IndexBuilder

たとえば、 のこの説明を参照してくださいNoClassDefFoundError

于 2009-03-03T02:18:28.087 に答える
0

プロジェクトによって参照されているJAR/Libの少なくとも1つがプログラムのクラスパスにコピーされていない可能性があります。プロジェクトで使用するすべてのjar/libをプロジェクトの/distフォルダー(またはYourApplication.jarがある場所)にコピーしてから、プログラムを実行してみてください。これで修正された場合は、Netbeansプロジェクトが正しく構成されていないことを意味します。

于 2009-03-02T18:41:29.327 に答える
0

コマンドラインから実行しているときは、実際にはApache Antを呼び出しています。ClassNotFound 例外が発生する理由は、${javac.classpath} および他のすべてのプロパティが適切に設定されていないためです。これが、コードが Netbeans コンテキスト内から実行される理由です。Netbeans がこれらのプロパティを設定しています。

コマンドラインから実行するにはどうすればよいかという最初の質問に答えるには、プロパティ宣言を介してこれらのパラメーターを定義するプロパティファイルを設定する必要があります。

<property file="myproject.properties"/> 

別の解決策は、sh スクリプトを介してプロパティを環境変数として設定することです。または、ビルド スクリプトでプロパティの代わりに実際のパスを使用できます。

コマンド ラインから Ant を呼び出す方法の詳細については、こちらを参照してください。

于 2009-03-03T02:36:47.827 に答える
0

これを Windows または Unix で実行していますか。Windows の場合は、プロパティ ファイルを次のように変更してみてください。


run.classpath=${javac.classpath};${build.classes.dir}

コロンではなくセミコロンに注意してください。

于 2009-03-04T16:23:49.763 に答える