48

Javaプログラムを実行すると、この行にエラーが表示されます

compiler.getTask(null, null, new DiagnosticCollector<JavaFileObject>(), null, null, compilationUnits);

私が得ているエラーは次のとおりです。

Exception in thread "main" java.lang.NullPointerException
    at AnotherClassLoader.loadClass(test.java:58)
    at test.main(test.java:30)
    at Main.main(Main.java:68)

このエラーを解決する方法を教えてください。

4

3 に答える 3

82

NullPointerExceptionは、渡す変数の1つがnullであることを意味しますが、コードはそうではないようにそれを使用しようとします。

たとえば、これを行う場合:

Integer myInteger = null;
int n = myInteger.intValue();

コードはmyIntegerのintValueを取得しようとしますが、nullであるため、取得できません。nullポインター例外が発生します。

これが意味するのは、getTaskメソッドがnullではないものを予期しているが、nullを渡しているということです。getTaskに必要なものを把握し、必要なものを渡します。

于 2012-05-05T18:09:24.473 に答える
7

このエラーは、nullオブジェクトインスタンスを参照しようとしたときに発生します。与えられた情報からこのエラーの原因を特定することはできませんが、IDEで簡単にデバッグできます。プログラムの予期しない動作を回避するために、例外処理を使用することを強くお勧めします。

于 2012-05-05T18:08:52.270 に答える
2

暗闇の中でのショット(初期化コードを私たちと共有しなかったため):問題の原因compilerを取得する方法。compilerjdkとは異なり、jreはツールを提供しないため、JREがJDK内にあるように指定すると、NPE.

于 2012-05-05T18:13:58.177 に答える