jdk环境导致tomcat启动报错修改

jdk环境导致tomcat启动报错修改

前段时间做一个需求的时候,应要求对项目进行了一些修改,然后重新部署项目到服务器上,启动的时候tomcat的启动日志里面老是报servlet-api.jar找不到的错误:
在这里插入图片描述
从错误提示上可以看出是依赖包找不到的问题,但是这个包在tomcat的lib下是存在的,我也尝试着将缺的包加到jdk/jre/lib/ext和项目的lib下,但都不能阻止这个错误的出现,想了一下既然不是包的问题,那应该是和编译环境有关的,于是查看服务器默认使用的jdk和jdk环境变量的配置,没发现什么问题,但是当我切换到其他用户时发现用的jdk版本是1.7的,那就可以确认是环境的问题了。

//在root用户下通过这个命令查看我的是/export/home/tools/jdk1.6.0_06/bin/java
//在centos用户下jdk是1.7的
which java

在centos用户下,查看java链接指向(ll /etc/alternatives |grep java),结果如下图:

解决:
1.删除了 /usr/bin/java 和/etc/alternatives/java 这两个软链接

rm -f /usr/bin/java
rm -f /usr/bin/javac
rm -f /etc/alternatives/java
rm -f /etc/alternatives/javac

2.重新建立新的软连接指向jdk1.6

#cd /usr/bin
ln -s -f /usr/java/jdk1.6.0_01/jre/bin/java
ln -s -f /usr/java/jdk1.6.0_01/bin/javac

参考:https://blog.youkuaiyun.com/moheqionglin/article/details/19691617

### Tomcat 运行时出现错误的解决方案 当遇到 `Artifact tomcat:war exploded: Error during artifact deployment` 或其他类似的 Tomcat 启动报错问题时,可以从以下几个方面入手解决问题: #### 1. **XML 配置文件检查** 如果项目之前可以正常运行,在修改代码后出现问题,可能是由于 XML 文件中的配置写错所致。建议仔细检查项目的 `web.xml` 及其他相关配置文件是否存在语法错误或路径不匹配的情况[^1]。 #### 2. **Tomcat 版本兼容性** 若本地使用的 Tomcat 版本与服务器上的版本不同,可能会引发兼容性问题。例如,Spring Boot 默认支持基于 Servlet 3.1 的 Tomcat 8.x 容器,而较低版本(如 Tomcat 7)可能无法完全满足需求。因此,确认所使用的 Tomcat 版本是否与框架要求一致非常重要[^2]。 #### 3. **依赖冲突排查** 使用 Maven 或 Gradle 构建的应用程序可能存在依赖项之间的冲突。可以通过以下命令查看依赖树并定位潜在问题: ```bash mvn dependency:tree ``` 确保引入的库版本与当前使用的 Tomcat 版本相适应。如果有冲突,尝试排除不必要的依赖或将它们升级到最新稳定版[^4]。 #### 4. **日志分析** 查看详细的错误日志可以帮助快速锁定问题根源。通常情况下,Tomcat 日志会记录具体的异常堆栈信息以及触发原因。重点检查以下目录下的日志文件: - `${TOMCAT_HOME}/logs/catalina.out` - `${TOMCAT_HOME}/logs/localhost.<date>.log` #### 5. **外部 Tomcat 部署注意事项** 对于 Spring Boot 应用以外部 WAR 形式部署至 Tomcat 的场景,需注意以下几点: - 确保主类继承自 `SpringBootServletInitializer` 并重写了 `configure` 方法。 - 外部 Tomcat 不会加载 Spring Boot 中定义的服务端口号和上下文路径;这些参数由 Tomcat 自身决定。 #### 6. **JDK 版本验证** 某些 Java Web 项目对 JDK 版本有严格的要求。如果使用了较新的 JDK 编译代码却试图将其部署到旧版本 JVM 上运行,则可能导致 ClassFormatError 或 UnsupportedClassVersionError。推荐统一开发环境和服务环境JDK 版本[^3]。 --- ```python # 示例:调整 Spring Boot 主类以适配外部 Tomcat import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` --- ### 总结 针对 Tomcat 运行过程中发生的各种错误,应优先从配置校验、版本一致性、依赖管理等方面逐一排查。同时利用工具辅助诊断具体失败环节,并依据官方文档及时更新相应组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值