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

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

发生缘由

学习Tomcat软件的使用

环境

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

问题及补救

启动Tomcat

问题

我的系统是win10,所以打开Tomcat需要启动bin目录下面startup.bat文件。可是双击startup.bat文件,发现会闪退。搜索

通过搜索引擎搜索发现:这种情况的发生是因为没有正确的配置JAVA环境变量。结果

可是我之前已经配置好了。使用cmd命令窗口分别输入下面命令:java、javac、java -version都没有任何问题。

下载jre

搜索

通过搜索引擎搜索发现:查找到了jre的影子。原来自从jdk11版本开始后,下载jdk已经不会自带jre了,所以需要自行下载。果然,打开下载的jdk-16.0.2,里面并没有jre。修改

通过管理员身份

打开cmd命令,进入jdk的文件夹。

我这里下载的jdk位置位于E:JAVA,因此需要在E:JAVAjdk-16.0.2下面打开cmd命令,键入下面的代码:binjlink.exe –module-path jmods –add-modules java.desktop –output jre。

之后就会发现jdk-16.0.2文件夹下面多了一个jre的文件夹。然后再配置jre的环境变量,也就是JRE_HOME:E:JAVAjdk-16.0.2jre Path:%JRE_HOME%bin结果

双击打开startup.bat文件依旧是闪退,没有作用。

修改源码

搜索

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

修改

所以我们可以在setclasspath.bat文件下面,声明环境变量,添加上自己本地jdk、jre路径。

右键通过记事本打开setclasspath.bat文件,然后在setclasspath.bat文件代码最上方输入set JAVA_HOME=E:JAVAjdk-16.0.2(jdk路径) set JRE_HOME=E:JAVAjdk-16.0.2jre(jre路径)

结果

双击打开,这次闪退是闪两下了,依旧打不开。

检查端口号

搜索

通过搜索引擎搜索发现:有可能是有其他应用程序占用该端口号修改

通过cmd命令查看是否有其他应用程序占用8080端口号,键入netstat -aon|findstr “8080”。结果

并没有软件占用。

捕捉错误信息

搜索

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

修改

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

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

call “%EXECUTABLE%” start %CMD_LINE_ARGS% # 修改为下面代码 call “%EXECUTABLE%” run %CMD_LINE_ARGS% 保存,然后以cmd命令的形式打开startup.bat文件。这时候会在cmd窗口出现 Using CATALINA_BASE: “E:Tomcatapache-tomcat-8.5.75” Using CATALINA_HOME: “E:Tomcatapache-tomcat-8.5.75” Using CATALINA_TMPDIR: “E:Tomcatapache-tomcat-8.5.75temp” Using JRE_HOME: “E:JAVAjdk-16.0.2jre” Using CLASSPATH: “E:Tomcatapache-tomcat-8.5.75binbootstrap.jar;E:Tomcatapache-tomcat-8.5.75bintomcat-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.(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.(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:Tomcatapache-tomcat-8.5.75” Using CATALINA_HOME: “E:Tomcatapache-tomcat-8.5.75” Using CATALINA_TMPDIR: “E:Tomcatapache-tomcat-8.5.75temp” Using JRE_HOME: “E:JAVAjdk-16.0.2jre” Using CLASSPATH: “E:Tomcatapache-tomcat-8.5.75binbootstrap.jar;E:Tomcatapache-tomcat-8.5.75bintomcat-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:JAVAjdk-16.0.2 set JRE_HOME=E:JAVAjdk-16.0.2

结果

双击打开,发现可以成功运行,但是有乱码问题。

修改乱码问题

修改

我们来到conf目录中,找到一个名为 logging.properties的文件,打开这个配置文件,修改如下配置项:java.util.logging.ConsoleHandler.encoding = UTF-8 # 修改为下面代码 java.util.logging.ConsoleHandler.encoding = GBK

保存后,重启tomcat!

结果

恭喜,成功了。

重新修改环境变量

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

应该为:JAVA_HOME:E:JAVAjdk-16.0.2 Path:%JAVA_HOME%bin我弄的:JAVA_HOUME:E:JAVAjdk-16.0.2 Path:%JAVA_HOUME%bin

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

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

set JAVA_HOME=E:JAVAjdk-16.0.2 set JRE_HOME=E:JAVAjdk-16.0.2

然后就没有什么问题了。

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


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容