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