4

私は、Java で作成したプログラムを持っており、Windows タスク スケジューラで 5 分ごとに実行するように設定しています。「C:\Program Files\Java\jre7\bin\javaw.exe」を実行し、jar ファイルとすべてのコマンドライン パラメータを渡します。

ほとんどの場合、これは問題なく動作しますが、ときどき自分のコンピューターに戻ると、「Java(TM) Platform SE バイナリーが動作を停止しました」というポップアップが表示されます。そのため、最初は自分のコードに関係があると思い、テキスト ファイルに追加された多くのデバッグ ステートメントを追加しました。クラッシュしたときにテキスト ファイルを確認したところ、不完全な実行が一覧表示されていませんでした。次に、メイン メソッドに print ステートメントを追加しました。

public static void main (String[] args) {
    System.out.println ("Main Method Called");
    new Runner (args);
}

その後、クラッシュするまで Java プログラムをコマンドラインから実行し続けたところ、興味深いことに気付きました。クラッシュ時に、「呼び出されたメイン メソッド」が出力されませんでした。クラッシュしたのは私の Java プログラムではなく、Java そのものであることがわかりました。

次に、詳細な印刷ステートメントをコマンドラインに追加しました。

java -verbose:class -verbose:gc -verbose:jni -jar ...

そこから、プログラムが再び失敗するまでプロセスを続けました。失敗した場合、出力は成功した実行 (667 行) よりもはるかに小さくなります (346 行)。出力が突然停止する 346 行目までは、両方の実行のすべてがまったく同じです。したがって、346 行目または 347 行目で何が起こってもクラッシュすることがわかります。340 ~ 346 行を次に示します。

[Loaded sun.nio.cs.StandardCharsets from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.util.PreHashedMap from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.nio.cs.StandardCharsets$Aliases from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.nio.cs.StandardCharsets$Classes from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.nio.cs.StandardCharsets$Cache from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.security.action.GetPropertyAction from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded java.util.Arrays from C:\Program Files\Java\jre7\lib\rt.jar]

実行が成功すると、出力が続きます。347 行目から 355 行目は次のとおりです。

[Dynamic-linking native method java.lang.Object.getClass ... JNI]
[Dynamic-linking native method java.lang.Class.forName0 ... JNI]
[Loaded sun.nio.cs.HistoricallyNamedCharset from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.nio.cs.MS1252 from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.nio.cs.SingleByte from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded java.lang.Class$1 from C:\Program Files\Java\jre7\lib\rt.jar]
[Dynamic-linking native method sun.reflect.Reflection.getClassAccessFlags ... JNI]
[Loaded sun.reflect.ReflectionFactory$1 from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded sun.reflect.NativeConstructorAccessorImpl from C:\Program Files\Java\jre7\lib\rt.jar]

最後に、クラッシュすると、Windows は次の情報を含むポップアップ (前述) を表示します。

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: java.exe
  Application Version:  7.0.210.11
  Application Timestamp:    515d999b
  Fault Module Name:    ntdll.dll
  Fault Module Version: 6.1.7601.18247
  Fault Module Timestamp:   521eaf24
  Exception Code:   c0000005
  Exception Offset: 00000000000986ea
  OS Version:   6.1.7601.2.1.0.256.48
  Locale ID:    1033
  Additional Information 1: 4c0d
  Additional Information 2: 4c0d4d78887f76d971d5d00f1f20a433
  Additional Information 3: 4c0d
  Additional Information 4: 4c0d4d78887f76d971d5d00f1f20a433

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt

問題の署名を読み、「ntdll.dll」が原因としてリストされていることを確認した後、それに関連する問題を検索しましたが、解決策は見つかりませんでした。

これを修正するために私にできることはありますか?

4

0 に答える 0