如标题所述,这里分享的 java tomcat server 专案具有以下特点:
JDK 8 的开发环境非 maven 专案非 gradle 专案绝对不是 spring boot 专案
----- 以下开始採坑全记录!
MacBook-Pro ~ % docker run -d --name=tomcat-ithelp -p 8088:8080 tomcat:9.0-jdk8-openjdk
container 长出来后,兴沖沖地在 safari 键入 localhost:8088
解决方法:
看起来正常了!
既然 docker image 是宣称 tomcat:9.0-jdk8-openjdk
确实是 java 8。
接下来把专案档 managerWeb.war 複製一份到 container 的 webapps 目录下。
MacBook-Pro ~ % docker cp ~/managerWeb/managerWeb.war tomcat-ithelp:/usr/local/tomcat/webapps
container log 喷错了!
『 Failed to instantiate [com.mchange.v2.c3p0.ComboPooledDataSource]: Constructor threw exception; nested exception is java.lang.ExceptionInInitializerError』
解决方法:
RESTART container 后,继续喷错!
『com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure』
解决方法:
RESTART container 后,继续喷错!
『Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext/applicationContext-sessionFactory.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.UniqueConstraint.name()Ljava/lang/String;』
经过google大神的指点后,
直接删除 WEB-INF/lib 下的 persistence.jar
总算 ...
后记:
这篇主要是写给未来的自己看的。
未来再处理到这种 Jar 档没有控管的专案,只好耐心地把这堆有冲突的 Jar 档逐步移除了。