1、问题
最近在使用Eclipse写Java Web。tomcat环境什么都已经配置好了,能够正常运行。但是又装了些插件,捣鼓了一些配置,第二天还是一样的项目,跑不起来了。 选择相同的server进行Pbulish后start,出现了下面的错误。
看到这些错误我就找了一些相关文章看了一下,失败的原因很多,如:
- 端口占用(排除,还没启动过tomcat)
- 没有配置好Jdk,tomcat环境(排除,没有修该过环境变量等配置,命令行均正常运行)
- xml文件出错(排除,相同的项目没改过)
- 无法创建虚拟机,以为是eclipse.ini文件出错(排除,没修改过)
然后我又去查看了tomcat的log下的日志文件,不过没有发现什么错误警告。
所以问题处在了Eclipse的配置上。在前面的错误提示中,我忽略了控制台给出的信息。导致我一直没有找到源头。如下:
出现该错误,发现是Java虚拟机启动时参数配置导致的。然后我根据这个找到相关文章。
这篇文章只是简单给出了在运行时修改
Run configuration
删除相应参数,我尝试后可以成功启动。但是,第二次启动项目时,该参数还是存在,所以不能根除。
2、解决
后面又查看了相关的文章。mac eclipse中运行tomcat出现错误:-Djava.endorsed.dirs=D:\Tomcat 9.0\endorsed is not supported,虽然平台不一样,但原因都是因为Jdk版本过高不兼容tomcat导致。
然后我发现原来是我JDK环境默认设置成Jdk-10(原先使用的是Jdk-1.8),下面是修改默认Jdk的方法,打开Window|Preferences|Java|Build Path|Install JREs中,讲默认Jdk选择1.8版本。然后点击Apply。
同时如果项目原先使用jre-10需要改成jre-1.8。
关于tomcat和Jdk兼容版本可以打开tomcat官网查看,或者Eclipse的Window|Preferences|Server|Runtime Enviroments点击Add。可以看到Tomcat和相应支持的Jdk版本。我们可以适当降低Jdk版本来解决这个问题。
下面是给出的总结:
tomcat版本 | 兼容的Jdk版本 |
---|---|
Tomcat v3.2 | J2EE 1.2 |
Tomcat v4.0 | J2EE 1.2 and 1.3 |
Tomcat v4.1 | J2EE 1.2 and 1.3 |
Tomcat v5.0 | J2EE 1.2,1.3,1.4 |
Tomcat v5.5 | J2EE 1.2,1.3,1.4 |
Tomcat v6.0 | J2EE 1.2,1.3,1.4 and Java EE 5 and 6 |
Tomcat v7.0 | J2EE 1.2,1.3,1.4 and Java EE 5 and 6 |
Tomcat v8.0 | J2EE 1.2,1.3,1.4 and Java EE 5,6 and 7 |
Tomcat v8.5 | J2EE 1.2,1.3,1.4 and Java EE 5,6 and 7 |
Tomcat v9.0 | J2EE 1.2,1.3,1.4 and Java EE 5,6,7 and 8 |
下面是tomcat官网给出的版本关系:tomcat官网
官网显示Tocmat v9.0支持Jdk 8及以上版本。可能是在Eclipse中会出现这样的问题,我在IDEA进行相同的测试,先后使用Jdk-1.8和Jdk-10来使用tomcat v9.0均能成功。
下面是相关jdk-10下运行maven项目截图: