web-dev-qa-db-ja.com

Java.lang.NullPointerExceptionエラーを解決するには?

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)

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

47
Justin k

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

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

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

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

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

81
Jeremy

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

7

暗闇の中でのショット(compiler初期化コードを共有していないため):compilerを取得する方法が問題の原因です。 jdkはjdkとは異なり、jreはツールを提供しないため、JREをJDKの内側に配置します。その結果、NPEになります。

2
aviad