解決Tomcat?Caused?by:?java.lang.ClassNotFoundException:?java.util.logging.Logger的問題
發(fā)生緣由
- 學習Tomcat軟件的使用
環(huán)境
- Tomcat版本:8.5.75
- jdk版本:jdk-16.0.2
- 電腦系統(tǒng):win10
問題及補救
啟動Tomcat
- 問題
我的系統(tǒng)是win10,所以打開Tomcat需要啟動bin目錄下面startup.bat文件??墒请p擊startup.bat文件,發(fā)現(xiàn)會閃退。 - 搜索
通過搜索引擎搜索發(fā)現(xiàn):這種情況的發(fā)生是因為沒有正確的配置JAVA環(huán)境變量。 - 結果
可是我之前已經(jīng)配置好了。使用cmd命令窗口分別輸入下面命令:java
、javac
、java -version
都沒有任何問題。
下載jre
- 搜索
通過搜索引擎搜索發(fā)現(xiàn):查找到了jre的影子。原來自從jdk11版本開始后,下載jdk已經(jīng)不會自帶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
。
之后就會發(fā)現(xiàn)jdk-16.0.2文件夾下面多了一個jre的文件夾。然后再配置jre的環(huán)境變量,也就是JRE_HOME:E:\JAVA\jdk-16.0.2\jre Path:%JRE_HOME%\bin - 結果
雙擊打開startup.bat文件依舊是閃退,沒有作用。
修改源碼
搜索
通過搜索引擎搜索發(fā)現(xiàn):仍然有可能是環(huán)境變量配置錯誤。查看源碼可以發(fā)現(xiàn)startup.bat–>catalina.bat–>setclasspath.bat,他們之間是層層調(diào)用的關系。修改
所以我們可以在setclasspath.bat文件下面,聲明環(huán)境變量,添加上自己本地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路徑)
結果
雙擊打開,這次閃退是閃兩下了,依舊打不開。
檢查端口號
- 搜索
通過搜索引擎搜索發(fā)現(xiàn):有可能是有其他應用程序占用該端口號 - 修改
通過cmd命令查看是否有其他應用程序占用8080端口號,鍵入netstat -aon|findstr “8080”
。 - 結果
并沒有軟件占用。
捕捉錯誤信息
搜索
通過搜索引擎搜索發(fā)現(xiàn):可以通過捕捉查看錯誤信息。修改
下面一共有兩種錯誤方法可以捕捉錯誤信息,任意選擇一種即可。
右鍵startup.bat文件,通過記事本打開,將倒數(shù)第三行修改一下。
call "%EXECUTABLE%" start %CMD_LINE_ARGS% # 修改為下面代碼 call "%EXECUTABLE%" run %CMD_LINE_ARGS%
- 保存,然后以cmd命令的形式打開startup.bat文件。這時候會在cmd窗口出現(xiàn)
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文件。這時候會出現(xiàn)一個新的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環(huán)境變量
搜索
通過搜索引擎搜索Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
發(fā)現(xiàn):jre的問題。修改
右鍵通過記事本打開setclasspath.bat文件,然后將之前在修改源碼的步驟里面寫的代碼修改為
set JAVA_HOME=E:\JAVA\jdk-16.0.2 set JRE_HOME=E:\JAVA\jdk-16.0.2
結果
雙擊打開,發(fā)現(xiàn)可以成功運行,但是有亂碼問題。
修改亂碼問題
修改
我們來到conf目錄中,找到一個名為 logging.properties的文件,打開這個配置文件,修改如下配置項:
java.util.logging.ConsoleHandler.encoding = UTF-8 # 修改為下面代碼 java.util.logging.ConsoleHandler.encoding = GBK
保存后,重啟tomcat!
結果
恭喜,成功了。
重新修改環(huán)境變量
在我寫這篇博客的時候,發(fā)現(xiàn)其實是把JAVA環(huán)境變量配置錯誤了。
- 應該為: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
都沒有任何問題。
修改完了環(huán)境變量,將之前在配置文件中寫的代碼刪除:
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的問題的詳細內(nèi)容,更多關于Tomcat Caused java.util.logging.Logger的資料請關注腳本之家其它相關文章!
相關文章
使用Tomcat Native提升Tomcat IO效率的方法詳解
這篇文章主要介紹了使用Tomcat Native提升Tomcat IO效率的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12IDEA 配置Tomcat服務器和發(fā)布web項目的圖文教程
這篇文章主要介紹了IDEA 配置Tomcat服務器和發(fā)布web項目的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11Linux 中Tomcat遠程調(diào)試代碼的實現(xiàn)方法
這篇文章主要介紹了Tomcat 遠程調(diào)試代碼的實現(xiàn)方法的相關資料,這里提供實例幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-08-08Jenkins+tomcat自動發(fā)布的熱部署/重啟及遇到的問題解決辦法(推薦)
這篇文章主要介紹了Jenkins+tomcat自動發(fā)布的熱部署/重啟及遇到的問題解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07