2012-05-05 31 views
37

私は私のJavaプログラムを実行すると、私は取得しています、それは私にこの行にエラーが発生しますjava.lang.NullPointerExceptionエラーを解決するには?

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) 

あなたはどのように私はこのエラーを解決することができますを教えてくださいすることができ?

+0

ヘルプが必要な場合は、[SSCCE](http://www.sscce.org)を含めてください。私たちはSSCCEがなければ大したことはできません。ありがとう。ああ、質問のタイトルをもう少し説明的なものに変更することを検討してください。 – kentcdodds

+0

stacktraceは 'NullPointerException'が出現する正確な行を提供します。あなたはそれを持っている理由を理解して、それを修正する必要があります。 –

+4

問題を特定して**解決しました**そして**特定した問題を修正する**。 NPEsは 'someNullExpression.someMember'の場合にのみ発生すべきです。つまり、 'null'値は、この例外が自然に発生するためのメンバ/メソッドの* target *式でなければなりません。投稿された例には、この要件を満たすことができる* 1つの*式しかありません。 (ヒント: 'compiler'変数は何を評価するのですか?) –

答えて

6

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

74

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

、私はこれを行う場合は、次の

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

コードはのmyIntegerのintValueをつかむしようとしますが、それがnullであることから、それが1つを持っていない:nullポインタ例外が発生します。

これは、getTaskメソッドがnullではないものの、nullを渡すことを期待していることを意味します。 getTaskが必要とするものを見つけ、必要なものを渡してください!

1

compiler初期化コードを私たちと共有していないため、暗闇の中でちょっとしたショットがあります:compilerを取得する方法で問題が発生します。 jreがJDKとは異なりJREの中に入るようにJREを指定すると、jreはツールを提供しませんので、結果はNPEとなります。

関連する問題