服务器中的tomcat能正常启动,但项目无法加载的问题
问题描述如下:
在IDEA中创建的项目,代码编写完成后,可以通过IDEA直接启动tomcat运行,运行成功。
将项目打成war包,拖到tomcat安装目录的webapps目录下,直接通过startup.bat启动tomcat,访问响应资源,运行成功。
将war包发送到linux系统的服务器中,通过服务器中的tomcat来启动。问题来了:
tomcat能正常启动,可以跳转到启动成功的页面。
但是只要加上项目路径,就会报404
总的来说问题就是在本地能运行的项目,放到服务器中就加载不了,网上搜索相关解决方案。
在各路论坛、社区翻关于这类问题的解决方法。
发现这个问题很多人都遇到过,但是问题产生的原因却是千奇百怪,因此不能指望有万能的解决方法。
但是其中有好几位dalao都提到了一个非常重要的思路:查看日志!
打开tomcat安装目录下的logs文件夹,查看catalina.xxx.log和localhost.xxx.log,发现报错信息:
has been compiled by a more recent version of the Java Runtime (class file version 53.0),this version of the Java Runtime only recognizes class file versions up to 52.0
文件的运行版本高了,当前的运行环境解析不了。
我在windows中装的是jdk1.9,而服务器中装的jdk1.8,因此就出现项目在本地能正常发布,但是在服务器中就加载不了的情况。
知道原因就好解决了,既然jdk1.9写的代码在jre1.8中解析不了,那么用1.8来编译就好了。
在pom.xml中,添加一项属性:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
或者直接添加tomcat插件
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8900</port> <path>/</path> <uriEncoding>UTF-8</uriEncoding> <server>tomcat7</server> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <target>1.8</target> <source>1.8</source> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
配置加载完成后,再重新将项目打包,上传到服务器部署,加载成功!问题解决!
总结:
同样症状的问题,导致的原因可能千奇百怪,不能指望有万能的解决方案!
出现问题不要乱,首先要做的是看日志!查找可能导致错误的原因,这样才会有一个大体方向,再顺着这个方向去排查。
能找出错的原因,问题就已经解决了一大半。