Java随机崩溃(可能的罪魁祸首:ntdll.dll?)

Java随机崩溃(可能的罪魁祸首:ntdll.dll?),java,crash,ntdll,Java,Crash,Ntdll,我有一个用Java编写的程序,并使用Windows任务调度器设置为每5分钟运行一次。它执行“C:\Program Files\Java\jre7\bin\javaw.exe”,并传递jar文件和所有命令行参数 在大多数情况下,它运行得非常好,但我偶尔会回到我的计算机,看到一个弹出窗口,上面写着“Java(TM)平台SE二进制已停止工作”。因此,起初,我认为这与我的代码有关,并添加了许多调试语句,这些语句被附加到文本文件中。当它崩溃时,我检查了文本文件,其中没有列出不完整的运行。然后,我在我的主方

我有一个用Java编写的程序,并使用Windows任务调度器设置为每5分钟运行一次。它执行“C:\Program Files\Java\jre7\bin\javaw.exe”,并传递jar文件和所有命令行参数

在大多数情况下,它运行得非常好,但我偶尔会回到我的计算机,看到一个弹出窗口,上面写着“Java(TM)平台SE二进制已停止工作”。因此,起初,我认为这与我的代码有关,并添加了许多调试语句,这些语句被附加到文本文件中。当它崩溃时,我检查了文本文件,其中没有列出不完整的运行。然后,我在我的主方法中添加了一个print语句:

public static void main (String[] args) {
    System.out.println ("Main Method Called");
    new Runner (args);
}
然后我不断地从命令行运行Java程序,直到它崩溃,我注意到了一些有趣的事情。在崩溃时,它从未打印“Main Method Called”。现在,我发现这很有趣,因为这告诉我崩溃的不是我的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”被列为原因后,我搜索了与此相关的问题,但没有找到任何解决方案


你知道我能做些什么来解决这个问题吗?

你试过卸载和重新安装Java吗?这看起来可能是一个损坏的文件。@chrylis我刚刚尝试过,我完全卸载了Java 7 JRE,并从网站上重新下载了它。重新安装并重新运行后仍遇到相同问题。