使用docker安装的tomcat部署activiti-app.war、activiti-admin.war失败(ClassNotFoundException)
背景
一直以来习惯用docker配置一些本地学习环境,许多教程配置activiti的方式都是通过复制activiti的war包部署在tomcat中,我尝试了一下通过docker的方式遇到了一些不易察觉的错误。
使用方式描述
- 使用docker安装tomcat9.0
docker run -d -p 8080:8080 --name tomcat tomcat:9.0
- 复制activiti的war包
- 浏览器访问404
分析
- 使用docker desktop view detail(根据tomcat的版本不同也会有其它的类的ClassNotFoundException)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
... 186 more
- 进一步查看tomcat的log日志初步猜测是jdk版本问题。
- 查看tomcat容器环境变量
- 查看官网文档得知需要jdk1.7+,也许jdk17过高,切换成jdk8也许可以。
- 使用jdk8的tomcat,直接使用tomcat7.0的镜像。