You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat 10启动报错找不到java/util/logging/Logger,求排查解决方法

问题描述
  • Win10系统中JDK17安装路径为D:\Program Files\Java\jdk-17.0.2,版本验证正常:
C:\Users\xxx>javac -version
javac 17.0.2
  • Tomcat10压缩包解压至E:\wsl\apache-tomcat-10.0.22,配置的环境变量如下:
set|findstr CATA
CATALINA_HOME=E:\wsl\apache-tomcat-10.0.22

echo %JRE_HOME%
D:\Program Files\Java\jdk-17.0.2\jre

echo %PATH%
....;E:\wsl\apache-tomcat-10.0.22\bin;E:\wsl\apache-tomcat-10.0.22\lib;

CLASS_PATH=D:\Program Files\Java\jdk-17.0.2\lib\dt.jar;D:\Program Files\Java\jdk-17.0.2\lib\tools.jar;%JRE_HOME%\lib
  • 运行startup或catalina run时出现错误日志:
catalina run
Using CATALINA_BASE:   "E:\wsl\apache-tomcat-10.0.22"
Using CATALINA_HOME:   "E:\wsl\apache-tomcat-10.0.22"
Using CATALINA_TMPDIR: "E:\wsl\apache-tomcat-10.0.22\temp"
Using JRE_HOME:        "D:\Program Files\Java\jdk-17.0.2\jre"
Using CLASSPATH:       "E:\wsl\apache-tomcat-10.0.22\bin\bootstrap.jar;E:\wsl\apache-tomcat-10.0.22\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   ""
NOTE: Picked up JDK_JAVA_OPTIONS:  --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
WARNING: Unknown module: java.rmi specified to --add-opens
Exception in thread "main" java.lang.NoClassDefFoundError: java/util/logging/Logger
        at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:61)
        at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:181)
        at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:133)
        at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:156)
        at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:211)
        at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:50)
Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
  • 访问localhost:8080无响应,需排查错误原因及配置遗漏点。
问题分析与解决建议

错误说明

  • java.lang.NoClassDefFoundError: java/util/logging/Logger:该类属于Java标准核心库,JVM无法加载它说明JRE环境配置异常,或JDK/JRE完整性存在问题。
  • WARNING: Unknown module: java.rmi specified to --add-opens:Java 17已移除java.rmi模块,该参数为无效配置,会触发警告,但不是核心报错原因。

配置问题与修复步骤

  1. JRE_HOME配置错误
    JDK 17开始不再单独提供独立的JRE目录,你配置的D:\Program Files\Java\jdk-17.0.2\jre大概率不存在或不完整。Tomcat 10可直接使用JDK自带的JRE环境,建议:

    • 将JRE_HOME修改为JDK根目录D:\Program Files\Java\jdk-17.0.2;
    • 或直接删除JRE_HOME环境变量,Tomcat会自动从JAVA_HOME识别JDK。
  2. CLASS_PATH配置冗余且干扰启动
    Java 9+采用模块化系统,传统CLASS_PATH配置已无必要,Tomcat启动时会自行管理类路径。手动配置的CLASS_PATH可能覆盖默认配置,导致标准库类加载异常,直接删除系统环境变量中的CLASS_PATH即可。

  3. 移除无效的JDK_JAVA_OPTIONS参数
    找到系统环境变量中的JDK_JAVA_OPTIONS,删除--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED这一项,避免无效参数干扰启动。

  4. 验证JDK完整性
    重启cmd窗口,执行java -version和javac -version确认输出正常,若异常则重新安装JDK 17。

完成以上操作后,重新执行catalina run,检查启动日志是否正常,再尝试访问localhost:8080。

内容的提问来源于stack exchange,提问作者gongliming7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:18:26