Linux环境tomcat启动不成功解决办法

文章讲述了配置ApacheTomcat环境变量时,JAVA_HOME与JRE_HOME的重要性,以及如何解决启动时NoClassDefFoundError,通过指定JRE_HOME路径和修改setclasspath.sh来确保正确加载类库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置了环境变量

JAVA_HOME环境变量,需要jre文件目录,jdk不包含jre目录需要进入jdk根目录使用命令生成

bin/jlink --module-path jmods --add-modules java.desktop --output jre

CATALINA_BASECATALINA_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'
如果在Linux环境中配置了Tomcat后在浏览器中无法访问,可能有以下几种解决办法: 1. 检查Tomcat是否已成功启动:首先确认Tomcat是否已成功启动。可以通过在终端输入命令`ps -ef | grep tomcat`来查看Tomcat的进程是否在运行。如果没有启动,可以使用`./startup.sh`命令来启动Tomcat。 2. 核对Tomcat端口号:确认Tomcat正在使用的端口号是否与浏览器中输入的一致。Tomcat的默认端口号为8080,如果你在配置Tomcat时修改了端口号,需要在浏览器中输入正确的端口号来访问。 3. 检查防火墙设置:Linux系统中的防火墙可能会阻止对特定端口的访问。可以通过输入命令`sudo ufw status`来检查当前防火墙的状态,确保Tomcat所使用的端口没有被阻止。如果防火墙处于启用状态,可以使用`sudo ufw allow 端口号`来开放相应的端口。 4. 查看Tomcat日志:检查Tomcat的日志文件,通常位于Tomcat安装目录下的logs文件夹中。查看最新的日志文件,根据错误提示来判断问题所在。常见的错误可能包括缺少依赖、文件权限问题等。根据具体错误信息来解决相应的问题。 5. 重新部署应用程序:如果Tomcat配置正确,但仍无法访问应用程序,则可能是应用程序部署正确导致的。可以尝试重新部署应用程序,确保应用程序的文件路径和配置文件的设置正确无误。 总结以上几点,通过检查Tomcat启动情况、核对端口号、排查防火墙设置、查看Tomcat日志以及重新部署应用程序,可以解决在浏览器无法访问Tomcat的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值