maven工程中因为依赖产生的各种问题汇总

Eclipse中建立Maven工程,尤其是web工程经常会遇到各种气人的问题,搞了半天最后会发现和技术没有半毛钱关系,就是依赖的问题。

上面那句话就是一句气话。


本文会持续更新。


问题一、关于数据库操作的问题。使用spring中jdbc去访问数据库,xml中配置如下

<bean id="data"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/test" />
		<property name="username" value="root" />
		<property name="password" value="mysql" />
	</bean>
	<bean id="userdao" class="com.hsb.dao.UserDao">
		<property name="dataSource" ref="data" />
	</bean>
没有任何问题,但是会有错误信息如下

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'data' defined in file [C:\Users\hehu\workspace\SQLPractise\target\classes\beans.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.Driver]
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.Driver]
上面的错误是因为没在pom.xml中添加依赖,添加如下依赖,问题解决。

                <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.19</version>
		</dependency>


问题二、使用Eclipse module建立Maven项目时,执行Maven install操作会报以下错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project SQLPractise: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

手动在src/main/webapp目录下面建一个WEB-INF文件夹,在里面建立一个web.xml文件,再次Maven install则成功。据网上的人说这是因为Eclipse和Maven兼容不完全导致的问题,不知道真假,能解决问题暂时就不追究了,工具只是工具,不要花费太多时间在上面,记下问题以备后用。

上面这样做后面可能会导致问题如下:

platform:/resource/SQLPractise/src/main/webapp/WEB-INF/web.xml; systemId: platform:/resource/SQLPractise/src/main/webapp/WEB-INF/web.xml; lineNumber: 1; columnNumber: 39; 文件提前结束。
问题中说明了原因,解决起来比较好解决,在web.xml中添加如下信息:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>ProjectName</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>
问题解决。


2016年9月26日更新

问题三、maven工程中,java.lang.ClassNotFoundException 或者 明明已经导包,却can't resolved ,或者不小心把maven dependencies从Build path中的Libraries中remove.可使用如下方式解决:

右键-> Maven update project.这时候如果还没看到,就在Build Path中的library中add library。


2016年10月9日更新

问题四、因非正常原因关闭eclipse过后,工作空间未有效保存或者其他什么原因导致项目无法正常启动时,考虑采取以下措施。

1、切换工作工作空间(或者关闭eclipse后,将workspace下面的.metadata文件夹删除,等价于切换工作空间且不可逆)。此方法会造成eclipse的个性化配置被删除,需要重新配置vm运行内存大小、servers的启动时间等等。。。比较麻烦,不到十分生气的时候,不建议使用。

2、进入eclipse的安装目录,使用命令eclipse -clean

3、常规的project -> clean,通常没什么卵用

4、删除项目,注意,不是将项目从硬盘上删除,而是在project explorer删除项目,然后重新导入

5、在.metadata文件夹下面的.plugins文件夹下面的org.eclipse.wst.server.core文件夹中删除服务器缓存

最后,通常项目无法启动会给出错误信息,好好分析错误信息然后再想如何解决问题比盲目去试更有效。

别让eclipse带走你的脑子,实在不行还可以换intelliJ


2016年12月8日更新

问题五、项目切换新版本后,部分旧版本功能被删除,新版本又增添了一些功能,在原工作空间删除旧版本后倒入新版本,发现新功能无法使用,而被删除的旧功能能使用,去删除了工作空间下的.metadata下.plugins\org.eclipse.wst.server.core下的一些缓存文件,结果项目启动后直接不编译在极短的时间内直接跑出了404,没找到原因,直接去删除了servers,然后还是不行,有各种乱七八糟的错误,新建tomcat server后,给重新配置了启动时间限制,启动内存,更改jdk、项目依赖,最后成功跑起来了。记下,以备后用。



2016-12-22更新

问题同上。但最后爆出错误如下:

严重: Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener
或者其他一些什么classloader之类的东西,还有一些什么springXXX cant be resolved之类的,在工程properties里deployment assembly 加入maven依赖

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值