6

私のコードは次のコマンドでうまくコンパイルされました:

javac -cp "../lib/*" AvroReader.java

(libはjarファイルを置く場所です)

実行時にClassNotFoundException、次の行に a が表示されます。

DatumReader<?> dtmrdr = new GenericDatumReader();

org.apache.avro.generic.GenericDatumReaderインポートしたのに見つからないと表示されます。

なぜこうなった?

4

3 に答える 3

14

インポートは、クラスのロードや CLASSPATH の設定とは関係ありません。

これを試して:

java -cp .;../lib/* Generator

'.'CLASSPATH の最初のエントリとしてドットを使用するGenerator.classと、Java を実行しているディレクトリにファイルが存在し、そのディレクトリの/lib1 つ上のレベルにあると見なされます。これらの両方が正しくない場合は、必要に応じて調整します。

于 2012-07-13T00:24:13.060 に答える
8

同じcpを再度含めてプログラムを実行する必要があります。

java -cp "lib directory where i put all the jars" MainClassOfYourApplication

あなたがそれをコンパイルした後:

javac -cp "lib directory where i put all the jars" AvroReader.java

あなたの例にもっと適用されます:

First step(compile all the needed java files): javac -cp "path/to/jars/*" AvroReader.java //here you should include all the java files not yet compiled but which you need to run your app
Second step: java -cp "path/to/jars/*" package.subpackage1.subpackage2.Generator
于 2012-07-13T00:06:42.697 に答える