JAVA_HOME:指向 JDK 安装目录,识别 Java 运行时。
JRE_HOME:通常由 JAVA_HOME 自动推导,手动设置可能导致冲突,因此建议使用 unset 清除。
命名为setenv.sh,放在 tomcat/apache-tomcat-9.0.111/bin 目录下
bash
export JAVA_HOME=/data/soft/jdk-21.0.2
unset JRE_HOME
1,适用于类似这种缺少模块的报错
bash
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.b
ase/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=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:176)
at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:115)
at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:136)
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:185)
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:47)
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:526)
... 6 more
2, Java 无法运行
bash
We cannot run Java, please ensure you have Java installed.
We have tried to execute /data/soft/jdk-21.0.2/bin/java but failed.
If you have installed Java in a unusual place you can set JAVA_HOME