有两个tomcat实例。一个用于jenkins(tomcat8-jenkins),另一个用于应用程序(tomcat-mc)。他们在同一台服务器上。
当我在jenkins的构建设置中执行shell脚本时,似乎jenkins正在尝试启动它自己的tomcat实例。以下是脚本和错误。
cd $TOMCAT_PATH/bin
./shutdown.sh
./startup.sh
错误
+ cd /usr/local/tomcat-mc/bin
+ ./shutdown.sh
java.lang.ClassNotFoundException: org.apache.catalina.startup.Catalina
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:216)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:391)
+ ./startup.sh
PID file (/usr/local/tomcat8-jenkins/logs/tomcat.pid) found. Is Tomcat still running? Start aborted.
Build step 'Execute shell' marked build as failure
Finished: FAILURE
我尝试过令人不安的BUILD_ID =并更改了CATALINA_HOME = $ TOMCAT_PATH。但仍然存在错误。
答案 0 :(得分:0)
这可能对你有所帮助.. https://stackoverflow.com/a/28938556/4595123
答案 1 :(得分:0)
这里的原因是jenkins tomcat设置了CATALINA_BASE。重置到所需的tomcat基础后问题得到解决。希望它可以帮助有需要的人。 在我的情况下添加这个以在jenkins中构建shell脚本,它覆盖了jenkins tomcat CATALINA_BASE
导出CATALINA_BASE = / usr / local / tomcat-mc