解决Tomcat Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger的问题

 更新时间:2023年10月13日 11:36:37   作者:此方星河  
这篇文章主要给大家介绍了如何解决Tomcat Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger的问题,文中有详细的原因分析及解决方法,需要的朋友可以参考下

发生缘由

  • 学习Tomcat软件的使用

环境

  • Tomcat版本:8.5.75
  • jdk版本:jdk-16.0.2
  • 电脑系统:win10

问题及补救

启动Tomcat

  • 问题
    我的系统是win10,所以打开Tomcat需要启动bin目录下面startup.bat文件。可是双击startup.bat文件,发现会闪退。
  • 搜索
    通过搜索引擎搜索发现:这种情况的发生是因为没有正确的配置JAVA环境变量。
  • 结果
    可是我之前已经配置好了。使用cmd命令窗口分别输入下面命令:javajavacjava -version都没有任何问题。

下载jre

  • 搜索
    通过搜索引擎搜索发现:查找到了jre的影子。原来自从jdk11版本开始后,下载jdk已经不会自带jre了,所以需要自行下载。果然,打开下载的jdk-16.0.2,里面并没有jre。
  • 修改
    通过管理员身份打开cmd命令,进入jdk的文件夹。
    我这里下载的jdk位置位于E:\JAVA,因此需要在E:\JAVA\jdk-16.0.2下面打开cmd命令,键入下面的代码:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
    之后就会发现jdk-16.0.2文件夹下面多了一个jre的文件夹。然后再配置jre的环境变量,也就是JRE_HOME:E:\JAVA\jdk-16.0.2\jre Path:%JRE_HOME%\bin
  • 结果
    双击打开startup.bat文件依旧是闪退,没有作用。

修改源码

  • 搜索
    通过搜索引擎搜索发现:仍然有可能是环境变量配置错误。查看源码可以发现startup.bat–>catalina.bat–>setclasspath.bat,他们之间是层层调用的关系。

  • 修改
    所以我们可以在setclasspath.bat文件下面,声明环境变量,添加上自己本地jdk、jre路径。
    右键通过记事本打开setclasspath.bat文件,然后在setclasspath.bat文件代码最上方输入

set JAVA_HOME=E:\JAVA\jdk-16.0.2(jdk路径)
set JRE_HOME=E:\JAVA\jdk-16.0.2\jre(jre路径)
  • 结果
    双击打开,这次闪退是闪两下了,依旧打不开。

检查端口号

  • 搜索
    通过搜索引擎搜索发现:有可能是有其他应用程序占用该端口号
  • 修改
    通过cmd命令查看是否有其他应用程序占用8080端口号,键入netstat -aon|findstr “8080”
  • 结果
    并没有软件占用。

捕捉错误信息

  • 搜索
    通过搜索引擎搜索发现:可以通过捕捉查看错误信息。

  • 修改

    下面一共有两种错误方法可以捕捉错误信息,任意选择一种即可。

    1. 右键startup.bat文件,通过记事本打开,将倒数第三行修改一下。

call "%EXECUTABLE%" start %CMD_LINE_ARGS%
# 修改为下面代码
call "%EXECUTABLE%" run %CMD_LINE_ARGS%
  • 保存,然后以cmd命令的形式打开startup.bat文件。这时候会在cmd窗口出现
Using CATALINA_BASE:   "E:\Tomcat\apache-tomcat-8.5.75"
		Using CATALINA_HOME:   "E:\Tomcat\apache-tomcat-8.5.75"
		Using CATALINA_TMPDIR: "E:\Tomcat\apache-tomcat-8.5.75\temp"
		Using JRE_HOME:        "E:\JAVA\jdk-16.0.2\jre"
		Using CLASSPATH:       "E:\Tomcat\apache-tomcat-8.5.75\bin\bootstrap.jar;E:\Tomcat\apache-tomcat-8.5.75\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:130)
		       at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:153)
		       at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:208)
		       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:636)
		       at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
		       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
		       ... 6 more
  • 右键startup.bat文件,通过记事本打开,在最后一行后面加上一行。键入:pause
    保存,然后双击打开startup.bat文件。这时候会出现一个新的Tomcat窗口,里面同样有着报错信息
Using CATALINA_BASE:   "E:\Tomcat\apache-tomcat-8.5.75"
		Using CATALINA_HOME:   "E:\Tomcat\apache-tomcat-8.5.75"
		Using CATALINA_TMPDIR: "E:\Tomcat\apache-tomcat-8.5.75\temp"
		Using JRE_HOME:        "E:\JAVA\jdk-16.0.2\jre"
		Using CLASSPATH:       "E:\Tomcat\apache-tomcat-8.5.75\bin\bootstrap.jar;E:\Tomcat\apache-tomcat-8.5.75\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:130)
		       at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:153)
		       at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:208)
		       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:636)
		       at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
		       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
		       ... 6 more

修改jre环境变量

  • 搜索
    通过搜索引擎搜索Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger发现:jre的问题。

  • 修改
    右键通过记事本打开setclasspath.bat文件,然后将之前在修改源码的步骤里面写的代码修改为

set JAVA_HOME=E:\JAVA\jdk-16.0.2
set JRE_HOME=E:\JAVA\jdk-16.0.2
  • 结果
    双击打开,发现可以成功运行,但是有乱码问题。

修改乱码问题

  • 修改
    我们来到conf目录中,找到一个名为 logging.properties的文件,打开这个配置文件,修改如下配置项:

java.util.logging.ConsoleHandler.encoding = UTF-8
# 修改为下面代码
java.util.logging.ConsoleHandler.encoding = GBK
  • 保存后,重启tomcat!

  • 结果
    恭喜,成功了。

重新修改环境变量

在我写这篇博客的时候,发现其实是把JAVA环境变量配置错误了。

  • 应该为:JAVA_HOME:E:\JAVA\jdk-16.0.2 Path:%JAVA_HOME%\bin
  • 我弄的:JAVA_HOUME:E:\JAVA\jdk-16.0.2 Path:%JAVA_HOUME%\bin

所以导致了错误,可是使用cmd命令窗口分别输入下面命令:javajavacjava -version都没有任何问题。

修改完了环境变量,将之前在配置文件中写的代码删除:

set JAVA_HOME=E:\JAVA\jdk-16.0.2
set JRE_HOME=E:\JAVA\jdk-16.0.2

然后就没有什么问题了。

以上就是解决Tomcat Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger的问题的详细内容,更多关于Tomcat Caused java.util.logging.Logger的资料请关注脚本之家其它相关文章!

相关文章

  • tomcat性能优化之如何搭建Apr模块

    tomcat性能优化之如何搭建Apr模块

    这篇文章主要介绍了tomcat性能优化之如何搭建Apr模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • idea配置Tomcat Deployment添加时没有Artifact的问题及解决

    idea配置Tomcat Deployment添加时没有Artifact的问题及解决

    这篇文章主要介绍了idea配置Tomcat Deployment添加时没有Artifact的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 解决启动tomcat报错发生服务特定错误1的问题

    解决启动tomcat报错发生服务特定错误1的问题

    这篇文章主要介绍了解决启动tomcat报错发生服务特定错误1的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Tomcat 与 maven 的安装与使用教程

    Tomcat 与 maven 的安装与使用教程

    这篇文章主要介绍了Tomcat 与 maven 的安装与使用,Tomcat HTTP 服务器,按照 HTTP 协议的格式来解析请求,调用用户指定的相关代码,并且按照 HTTP 响应的格式来构造返回数据,需要的朋友可以参考下
    2022-06-06
  • Tomcat安全设置 win2003 下tomcat权限限制

    Tomcat安全设置 win2003 下tomcat权限限制

    Tomcat安全设置 win2003 下tomcat权限限制,需要的朋友可以参考下。
    2011-03-03
  • Tomcat配置JMX远程连接的详细操作

    Tomcat配置JMX远程连接的详细操作

    这篇文章主要介绍了Tomcat配置JMX远程连接,包括配置tomcat,使用visualvm连接,使用jconsole连接,本文图文示例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • tomcat启动startup.bat一闪而过问题的解决方法【亲测有效】

    tomcat启动startup.bat一闪而过问题的解决方法【亲测有效】

    这篇文章主要介绍了tomcat启动startup.bat一闪而过问题的解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • IDEA2021 tomcat10 servlet 较新版本踩坑问题

    IDEA2021 tomcat10 servlet 较新版本踩坑问题

    这篇文章主要介绍了IDEA2021 tomcat10 servlet 较新版本踩坑问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 使用tomcat设定shared lib共享同样的jar

    使用tomcat设定shared lib共享同样的jar

    这篇文章主要介绍了使用tomcat设定shared lib共享同样的jar操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • tomcat的配置使用详细版(小结)

    tomcat的配置使用详细版(小结)

    开发者开发部署web应用时通常使用tomcat服务器,这篇文章主要介绍了tomcat的配置使用详细版(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论