[解決済み] java.util.concurrent.ExecutionException: java.lang.NullPointerException Error
質問
以下のコードは、スタンドアロンで実行してもエラーになりません。これをWebサーバーにデプロイすると(サーバーのインターフェースを実装し、JARとしてクラスパスに追加)、次のようになります。
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at com.nbis.process.JSON_2_File_Split_V004.fn_1_parserEntity(JSON_2_File_Split_V004.java:256)
at com.nbis.process.JSON_2_File_Split_V004.fn_0_primaryCaller(JSON_2_File_Split_V004.java:177)
at com.nbis.process.JSON_2_File_Split_V004.execute(JSON_2_File_Split_V004.java:151)
コードスニペットです。
this.callable = new JSON_3_File_Process_V005(this.originalFileName, this.inProgressDirLoc, this.processedDirLoc, "[" + jSONRecord.toString() + "]", this.dataMDHolder, this.dataAccIDValueMap, this.dataCountryNameValueMap);
String[] fullContent = null;
try {
fullContent = executor.submit(this.callable).get();
} catch (ExecutionException e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
log.info("Srii: " + errors.toString());
executor.shutdown();
return 7;
}
getの戻り値をExecutorCompletionServiceに追加するのも一つの手ですが、それでは非同期処理の概念がなくなってしまうのでは?つまり、呼び出し可能なgetからの出力文字列をStringBuilderに集めて、get回数が特定の数になったらディスクに格納する。データがディスクに出力されたら、StringBuilderをリフレッシュする。こうすることで、メモリにデータを保持することなく、一定時間ごとにディスクにデータをプッシュすることができる。
何が間違っているのか、何かご指摘はありますか?どのような入力も感謝します。ありがとうございます。
解決方法は?
修正しました。お役に立てれば幸いです。
問題は、変数の宣言の仕方にありました。クラスレベルの変数をstaticと宣言しなければならなかったので、この変数に適用された変更は他のすべてに反映されるようになりました。不思議なことに、スタンドアロンで実行した場合は問題が見当たりませんでした。
EDIT on 13112019: Moving my comment to the answer section, on request:
かなり前のことなので、変数の詳細を正確に覚えていません。this.originalFileName, this.inProgressDirLoc, this.processedDirLoc , this.dataMDHolder, this.dataAccIDValueMap, this.dataCountryNameValueMap のいずれかだと思いますが、どのメンバーから代入(または変更)しても、クラス内でその変数を参照したときに値が反映しないので静的に設定しなければならなかったのです。
関連
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】Javaの".class期待値"
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み】予期しない型エラー
-
[解決済み】Javaの".class expected "について
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件
-
[解決済み] エラー java.lang.OutOfMemoryError: GCオーバーヘッドの制限を超えました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】予期しない型エラー
-
[解決済み】Javaの".class expected "について
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。