java jvm 11 不启动

yan*_*ite 5 java windows jvm java-11

操作系统:Windows 10 Java:11.0.1

我设置环境变量

set JAVA_HOME=<null>

set CLASSPATH=<null>

set PATH='d:\java\jdk-11.0.1\bin
Run Code Online (Sandbox Code Playgroud)

正在运行的 cmd

版本

正在运行的 cmd

java -version
Run Code Online (Sandbox Code Playgroud)

返回此错误:

虚拟机初始化时出错
java.lang.IllegalArgumentException:空字符集名称
    在 java.nio.charset.Charset.lookup(java.base/Charset.java:455)
    在 java.nio.charset.Charset.defaultCharset(java.base/Charset.java:608)
    在 java.lang.StringCoding.decode(java.base/StringCoding.java:316)
    在 java.lang.String.(java.base/String.java:592)
    在 java.lang.String.(java.base/String.java:614)
    在 java.lang.System.initProperties(java.base/Native Method)
    在 java.lang.System.initPhase1(java.base/System.java:1942)

我试试

java -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)

同样的错误

我的 jdk8 没问题

我的 jdk 11 在公司电脑上没问题

什么?

小智 0

在安装了 gb18030 支持包的简体中文 Windows 中可以重现此问题。我用进程监视器跟踪它,看到进程以一些缓冲区溢出错误结束,同时加载名为 simsun gb18030 的字体文件(类似这样,我记不太清楚了。)这个问题存在于 JDK 11 之后的任何版本的 hotspot jvm 中。但对于j9 vm来说,没有问题。