配置了环境变量
JAVA_HOME
环境变量,需要jre文件目录,jdk不包含jre目录需要进入jdk根目录使用命令生成
bin/jlink --module-path jmods --add-modules java.desktop --output jre
CATALINA_BASE
、CATALINA_HOME
环境变量
export CATALINA_BASE=/home/kali/apache-tomcat-10.1.15
export CATALINA_HOME=/home/kali/apache-tomcat-10.1.15
export PATH=${CATALINA HOME}/bin:$PATH
异常症状
启动startup.sh
不会报错,但是访问localhost:8080
失败,这时启动shutdown.sh
关闭服务却会报错
...
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:133)
at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:156)
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:211)
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:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
...
查看启动startup.sh时控制台的信息
Using CATALINA_BASE: /home/kali/apache-tomcat-10.1.14 (tomcat根目录)
Using CATALINA_HOME: /home/kali/apache-tomcat-10.1.14
Using CATALINA_TMPDIR: /home/kali/apache-tomcat-10.1.14/temp
Using JRE_HOME: /usr/local/java/jdk-17.0.9/jre
Using CLASSPATH: /home/kali/apache-tomcat-10.1.14/bin/bootstrap.jar:/home/kali/apache-tomcat-10.1.14/bin/tomcat-juli.jar
JRE_HOME的环境变量需要同JAVA_HOME一样 (个中原理不明白)
Using JRE_HOME: /usr/local/java/jdk-17.0.9/jre
测试,在控制台指定JRE_HOME
的路径
export JRE_HOME=/usr/local/java/jdk-17.0.9(jdk根目录)
再次启动startup.sh
,可以访问localhost:8080
给tomcat指定jre路径,在tomcat/bin
目录下打开 setclasspath.sh
,在代码最前添加
JAVA_HOME='/usr/local/java/jdk-17.0.9'
JRE_HOME='/usr/local/java/jdk-17.0.9'