WenQiang's Note

Maven JavaWeb项目报错集合

  最近学习Servlet、JSP,把之前的练习项目(Maven项目)clone下来接着练习。之前使用Jetty运行测试项目,这次使用tomcat-maven-plugin在本地tomcat运行。第一次配置遇到了很多问题,记录如下:

配置Tomcat7-maven-plugin后运行报错

报错一:Cannot invoke Tomcat manager: Software caused connection abort: socket write error

Maven JavaWeb项目使用tomcat7-maven-plugin部署到本地Tomcat时报错,执行tomcat7:deploy命令后,tomcat的控制台报错:

1
Cannot invoke Tomcat manager: Software caused connection abort: socket write error

原因:

因为第一次运行成功后(期间有一次运行成功了),在本地Tomcat的webapps目录下已经存在了这个项目并且在运行着,不能再次发布这个项目。

解决:

在maven项目的pom.xml的tomcat-maven-plugin的configuration中配置 <update>true</update>,然后重新发布项目,成功运行。

报错二:org.apache.catalina.LifecycleException: Failed to start component

clone下来的项目只改了运行环境,可是运行报错如下:

原因:

web.xml配置文件中***-mapping中的url-pattern最前面没有加/

之前一直使用Jetty运行项目也没有报这个错,可能是jetty的检查机制不太严格。

pom.xml报错:Missing artifact com.oracle:ojdbc***:jar:***

  因为要连接Oracle数据库,需要导入ojdbc的驱动包,在pom.xml配置dependency后报错:找不到这个包,可是明明在Maven Repository中可以找到这个包。
原因:

oracle的ojdbc.jar是收费的,所以maven的中央仓库中没有这个资源,只能通过配置本地库才能加载到项目中去。

解决:

在Maven Repository中下载对应版本的ojdbc.jar,我下载的是:ojdbc6-11.1.0.7.0.jar
安装到本地仓库
将下载好的ojdbc6.jar复制某个目录下(Windows用户建议复制到用户目录:C:\Users\***),然后在该目录下打开命令窗口,然后输入如下命令:

1
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 -Dpackaging=jar -Dfile=ojdbc6-11.1.0.7.0.jar

DartifactId是ojdbc的版本
Dversion是具体版本号
Dfile是jar包的名字

执行出现BUILD SUCCESS,则说明安装到本地仓库成功了,去本地仓库也可以找到这个jar包,刷新项目再看pom.xml报错消失。