java
、javac
、java -version
都没有任何问题。E:\JAVA
,因此需要在E:\JAVA\jdk-16.0.2
下面打开cmd命令,键入下面的代码:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
。搜索
通过搜索引擎搜索发现:仍然有可能是环境变量配置错误。查看源码可以发现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路径)
结果
双击打开,这次闪退是闪两下了,依旧打不开。
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
搜索
通过搜索引擎搜索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环境变量配置错误了。
所以导致了错误,可是使用cmd命令窗口分别输入下面命令:java
、javac
、java -version
都没有任何问题。
修改完了环境变量,将之前在配置文件中写的代码删除:
set JAVA_HOME=E:\JAVA\jdk-16.0.2
set JRE_HOME=E:\JAVA\jdk-16.0.2
然后就没有什么问题了。