刚开始使用maven时,感觉无需在意导入的包,可没想到还是在包的导入遇上了问题,这困惑了很多新人(包括我)
在网上搜索,解决了一些问题。
参考地址:http://www.yihaomen.com/article/java/471.htm
遇见的示列:
程序一旦启动就会:
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener,
这说明没有找到在 web.xml 里面配置的 listener,
但maven 的pom.xml 里面已经配置相应的包,
而且可以在java 工程的maven dependency jar 包里面找到, 这说明maven是没有问题的
若配置文件确实没问题,那么这一切的根源在于:
关于版本冲突的问题,maven没那么智能,去识别,需要自己去exclude
如果不是maven wtp web工程,那就用eclipse的dependency 视图分析,找到那个找不到的类,确定在类路径中。
下面是解决的方法:
1. 右键单击工程项目 ->点击 properties
2. 选择 Deployment Assembly
3. 点击 Add -> Java Build Path Entries -> Next
4. 选择 Maven Dependencies -> Finish -> Apply -> OK
5. Clean project and server. 重启server
这样就能解决maven 下找不到 spring listener 的问题。
一个最明显的变化是你的web 工程里面明显多了一个jar包。
可是,还会有瑕疵。
后来运行程序,当运行到mybatis.xml(也就是将数据连接池<dataSource>和daoImpl.xml(写sql语句的那个文件)连接起来的那个文件)
具体的就是这里:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:cn/shop/core/dao/*.xml"/>
<property name="typeAliasesPackage" value="cn.shop.core.bean"></property>
</bean>
居然找不到sqlSessionFactory,其原因就是maven没那么智能去识别
所以不能一味地指望程序帮自己实现所有的功能。
这个时候使用ctrl shift t 能找到(找到那个找不到的类),从而确定该选那个jar(版本太多导致)
即便真没有,它这个时候也会自动下载
(前提是settings里面的下载的路径足够给力,不然可能下载不了)