Error: Could not create the Java Virtual Machine. Error: A fatal exception has exit

错误常见场景

  1. 开发与运行环境版本不匹配
    • 代码在高版本 JDK(如 Java 11、17 )中编译 / 开发,配置了 --add-opens 参数。
    • 实际运行时用了低版本 JDK(如 Java 8 ),JVM 无法解析该参数,直接报错退出。
  2. 配置文件 / 脚本残留高版本参数
    • IDE(如 Eclipse、IDEA )的运行配置、Tomcat 等容器的启动脚本里,保留了 --add-opens 这类高版本专属参数,但运行环境没升级,也会触发错误。

简单说,就是 低版本 Java 环境遇到了高版本才支持的 --add-opens 参数,导致 JVM 启动失败 。解决时,要么升级运行环境到 Java 9+,要么移除 / 修改不兼容的参数。

要删除 Java 启动参数中的--add-opens,可以根据不同的使用场景选择以下方法:

IntelliJ IDEA
  • 打开顶部菜单:Run → Edit Configurations
  • 在左侧选择对应的启动配置(如主类或测试类)
  • 在右侧找到 VM options 字段,删除其中的 --add-opens 参数
  • 点击 Apply → OK 保存
Eclipse
  • 右键点击项目 → Run As → Run Configurations
  • 选择对应的启动配置(如 Java Application
  • 在 Arguments 选项卡的 VM arguments 中删除 --add-opens
  • 点击 Apply → Run
示例

以下是我修改前的启动参数:

-Dcatalina.base="C:\project\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\tmp0" 
-Dcatalina.home="C:\DownloadSoft\StudySoft\Apache-Tomcat9.0" 
-Dwtp.deploy="C:\project\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps" 
-Djava.library.path="C:\DownloadSoft\StudySoft\Apache-Tomcat9.0\bin" 
--add-opens=java.base/java.lang=ALL-UNNAMED 
--add-opens=java.base/java.io=ALL-UNNAMED 
--add-opens=java.base/java.util=ALL-UNNAMED 
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED 
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 
-Djava.endorsed.dirs="C:\DownloadSoft\StudySoft\Apache-Tomcat9.0\endorsed"

以下是修改后的:

-Dcatalina.base="C:\project\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\tmp0"
-Dcatalina.home="C:\DownloadSoft\StudySoft\Apache-Tomcat9.0"
-Dwtp.deploy="C:\project\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps"
-Djava.library.path="C:\DownloadSoft\StudySoft\Apache-Tomcat9.0\bin"
-Djava.endorsed.dirs="C:\DownloadSoft\StudySoft\Apache-Tomcat9.0\endorsed"

按照以上方法即可解决。

你可能感兴趣的:(java,开发语言)