发生缘由
- 学习tomcat软件的使用
环境
- tomcat版本:8.5.75
- jdk版本: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:\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”。 - 结果
并没有软件占用。
捕捉错误信息
搜索
通过搜索引擎搜索发现:可以通过捕捉查看错误信息。修改
下面一共有两种错误方法可以捕捉错误信息,任意选择一种即可。
右键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命令窗口分别输入下面命令:java、javac、java -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的资料请关注代码网其它相关文章!
发表评论