运行java -version时初始化VM时发生错误

时间:2016-10-06 19:01:15

标签: java jvm initialization

我的perforce流中包含jdk(java版本1.8.0_102)。我在我的WIndows Server 2008 R2 Service Pack 1计算机上创建了登记,并尝试使用登记中的jdk运行java -version,但它因JVM初始化错误而失败。这是堆栈跟踪:

Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
    at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1451)
    at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1436)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:658)
    at sun.misc.MetaIndex.registerDirectory(MetaIndex.java:184)
    at sun.misc.Launcher$ExtClassLoader$1.run(Launcher.java:146)
    at sun.misc.Launcher$ExtClassLoader$1.run(Launcher.java:142)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.misc.Launcher$ExtClassLoader.getExtClassLoader(Launcher.java:141)
    at sun.misc.Launcher.<init>(Launcher.java:71)
    at sun.misc.Launcher.<clinit>(Launcher.java:57)
    at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1451)
    at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1436)

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

如上面的评论所述,问题出在perforce客户端的行结束设置中。它被设置为当地的&#39;因为我在Windows机器和我们的perforce服务器上使用&#39; unix&#39;行结束,它导致从服务器同步到本地计算机的jar中的问题。 我将结尾的行改为&#39; unix&#39;在我的perforce客户端,这解决了问题。