您现在的位置是:首页 >  云笔记 >  开发随笔 >  文章详情

Tomcat8启动报错:Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED

特不靠谱   2025-02-17 19:58:59   80人已围观

最近手贱,升级了JDK,从原来的JDK8升级到11后发现tomcat8无法启动,报错如下所示:

Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED

一想什么都没改,只是升级了一个JDK,肯定跟JDK有关。仔细一检查,发现一堆问题:

1、没有JRE

1.1、为啥没有JRE?

因为新版本的JDK(如JDK 11及以上)在安装后可能默认不包含JRE目录。这是因为从JDK 9开始,Java平台模块系统(JPMS)被引入,允许开发者根据需要创建最小化的运行时环境。因此,在安装这些版本的JDK时,JRE可能不是默认安装的组件。

1.2、 检查JRE是否已单独安装

在某些情况下,JRE可能已经作为其他软件的一部分被安装,或者你可能已经手动安装了JRE。你可以检查系统的安装目录或使用系统环境变量来确认JRE是否存在。通常,JRE会安装在与JDK相似的目录下,或者可能位于系统的某个公共位置,如C:\Program Files\Java\。

或者在JDK安装目录下,通常会有一个名为jre的文件夹(在旧版本的JDK中)。但在新版本中,这个文件夹可能不存在。你可以浏览JDK的安装目录来确认这一点。

4. 若不存在,使用命令生成JRE目录

如果JDK安装目录下没有JRE文件夹,你可以使用JDK自带的jlink工具来创建一个自定义的JRE。以下是具体的步骤和命令:

  • 以管理员身份运行cmd‌:确保你有足够的权限来执行后续的操作。

  • 导航到JDK安装目录‌:使用cd命令进入你的JDK安装目录。

  • 执行jlink命令‌:使用以下命令来创建一个包含基本模块的JRE:

bashCopy Codebin\jlink.exe --module-path jmods --add-modules java.desktop --output jre


这条命令会从jmods目录中提取必要的模块,并创建一个名为jre的输出目录,其中包含了运行Java应用程序所需的最小运行时环境。

5. 验证JRE目录是否成功生成并可用

  • 检查输出目录‌:确认在你的JDK安装目录下生成了一个名为jre的文件夹。

  • 测试JRE‌:你可以尝试在命令行中设置JAVA_HOME环境变量指向你的JDK安装目录,并将PATH环境变量更新为包含新生成的JRE的bin目录。然后,你可以运行一个简单的Java程序来验证JRE是否工作正常。

例如,你可以创建一个名为Test.java的简单Java文件,内容如下:

javaCopy Codepublic class Test {    public static void main(String[] args) {
        System.out.println("Hello, JRE!");
    }
}



编译并运行它:

bashCopy Codejavac Test.java
jre\bin\java Test



如果一切正常,你应该会看到输出Hello, JRE!

综上所述,如果JDK安装后没有JRE目录,你可以通过检查JDK版本、确认是否已单独安装JRE、查找JDK安装目录下的JRE文件夹(如果适用),以及使用jlink命令生成一个自定义的JRE来解决这个问题。


2、如何下载JRE?

3、如何安装?




参考资料:

1、利用tomcat运行jsp文件时,出现错误Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED Error

2、环境变量配置好了,可tomcat还是闪退,已解决!

3、Tomcat与支持的JDK版本清单

4、JDK安装与环境变量配置

5、JDK官方下载网站


分享到:

编辑发布时间:2025-02-18 19:56:32