本当に奇妙な NPE 例外が発生します。これは問題のあるコードです:
private static int countRecurse(File file) {
Preconditions.checkNotNull(file, "file argument");
int entries = 0;
for (File entry : file.listFiles()) { //NPE on this line
if (entry != null) {
if (entry.isDirectory())
entries += countRecurse(entry);
else
entries++;
}
}
return entries;
}
コメント行で NPE 例外が発生します。これは私が得たスタックトレースです:
java.lang.NullPointerException
at controllers.StudyPreparation.countRecurse(StudyPreparation.java:103)
at controllers.StudyPreparation.readDicomFiles(StudyPreparation.java:95)
at controllers.StudyPreparation.access$100(StudyPreparation.java:30)
at controllers.StudyPreparation$1.onReady(StudyPreparation.java:77)
at play.core.j.JavaWebSocket$$anonfun$webSocketWrapper$1$$anonfun$apply$1.apply(JavaWebSocket.scala:48)
at play.core.j.JavaWebSocket$$anonfun$webSocketWrapper$1$$anonfun$apply$
コードは Play フレームワーク アプリケーションの一部ですが、これが問題の一部である可能性はないと思います...ファイルの null を既にテストしているため、null になることはありません。listFiles() メソッド内で何か問題が発生した場合は、スタックトレースで確認できると思います。
では、何が問題になるのでしょうか?
編集:
ファイルがディレクトリかどうかを確認する問題は解決しました... file.listFiles() が null を返すため、NPE がスローされます。
また、javadocs に記載されていなくても、パスが存在しないため null が返されます。私の開発マシンでは手順がうまく機能しているため、確認しませんでした。問題は本番サーバーでのみ発生しますが、明らかにコードの他の部分に関連しています...
ご協力ありがとうございます。