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)
このエラーを解決する方法を教えてください。
NullPointerExceptionは、渡す変数の1つがnullであることを意味しますが、コードはそうではないように使用しようとします。
たとえば、これを行う場合:
Integer myInteger = null;
int n = myInteger.intValue();
コードはmyIntegerのintValueを取得しようとしますが、nullであるため、1つはありません。nullポインター例外が発生します。
これは、getTaskメソッドがnullではないものを期待しているが、nullを渡していることを意味します。 getTaskに必要なものを把握し、必要なものを渡します。
このエラーは、nullオブジェクトインスタンスを参照しようとしたときに発生します。与えられた情報ではこのエラーの原因を説明することはできませんが、IDEで簡単にデバッグできます。予期しないプログラムの動作を避けるために、例外処理を使用することを強くお勧めします。
暗闇の中でのショット(compiler
初期化コードを共有していないため):compiler
を取得する方法が問題の原因です。 jdkはjdkとは異なり、jreはツールを提供しないため、JREをJDKの内側に配置します。その結果、NPE
になります。