项目背景介绍:spring+springMVC+mybatis ssm框架+redis+dubbo+mq+zk
通过myeclipse可将原项目直接转为maven项目,但是不符合maven项目的目录规范,需要调整对应的路径;
maven目录:
转换步骤:右键选中项目->configure(有些myeclise可能没有这个选项,需到网上查下怎么显示此选项,也可参照下面步骤)->Convert to Maven Projects... 就行了
同理去掉maven构建:右键选中项目->configure(有些myeclise可能没有这个选项,需到网上查下怎么显示此选项,也可参照下面步骤)->Convert to Plug-in Projects.. 就行了
myeclipse中选中项目右键无configure选项处理:
Window > Preferences > General > Capabilities > Advanced > MyEclipse Standard Tools >WTP Deprecated(Leave off) 然后点击OK,Apply,OK就行了。
转换成maven项目后,需要通过pom.xml导入对应包,导包语句如下:
<dependencies>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
maven项目在tomcat中启动报了一堆错:
1. Caused by: java.lang.reflect.MalformedParameterizedTypeException
启动时报错,原因是dubbo 依赖 spring 2.5.6.SEC03,而我项目中有用spring 3.2.4.RELEASE,所以导致冲突。 在maven中把dubbo中的spring依赖去除就可以了。
如果你们项目中也报这个错,很可能也是因为jar包冲突造成的
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
2、Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
添加缺少的jar包:commons-collections-3.1.jar,commons-pool-1.3.jar,commons-dbcp.jar即可
3、Caused by: java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.AnnotationVisitor, but interface was expected
集成asm的jar冲突,可将项目中的包export导出看看多了哪些asm包,在像1方法中处理
4、Caused by: java.lang.ClassNotFoundException: org.springframework.http.CacheControl
出现这个问题我的处理办法是将各个spring的jar的版本统一,结果就好了
5、Caused by: java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean
缺少jar包 mybatis-spring.jar
6、Caused by: java.lang.ClassNotFoundException: org.I0Itec.zkclient.exception.ZkNoNodeException
缺少zk相关包,本项目主要是zkclient-0.10.jar与zookeeper-3.4.5.jar
7、org.xml.sax.SAXParseException; lineNumber: 21; columnNumber: 49; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明
缺少dubbo的包,加上;同时<dubbo:application name="msp_dubbo_consumer" />写成<dubbo:application name="msp_dubbo_consumer" ></dubbo:application> 至少我是这么处理的
8、java.lang.ClassNotFoundException: org.apache.cxf.transport.servlet.CXFServlet
缺少了对应jar包,加入即可,对应包为cxf-rt-transport-http-3.1.12.jar(当然,jar版本不一定要用3.1.12的)
9、org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cxf' is defined
在applicationContext.xml中加入cxf的引用,<import resource="classpath:META-INF/cxf/cxf.xml" />
对于这个问题:好像高版本的spring会自动加载这几个文件的。如果没有加载的话,那么我们就手动加载,如上说明
10、将maven项目导入eclipse中提示“没为类型 Node 定义方法 getTextContent”
解决办法:改一下java 编译器编译顺序,这是jre 在 builder path 的最下层,所以编译器没有使用JRE 中的类,这时需要将JRE 的位置网上调节,选择旁边的复选框,然后使用右边的Down 和 Up 按钮 (现在JRE已经在最底层了,所以此时的Down 按钮不可用)就可以调节JRE的位置了。将JRE的位置调到Web APP Library上面 就ok 了。
原因:项目中的某个jar包中也有一个 org.w3c.dom.Element,实际运用中调用了这个类,而没有用jdk的,调整下顺序就好
11、maven编译提示“No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?”
解决办法:进入eclipse菜单,Window > Preferences > Java > Installed JREs,选中jdk作为默认选项,不要选jre,再将项目clean一下,重新运行即可
12、maven项目编译漏掉src/main/java下的xml配置文件:
解决办法:在build标签中加上下面一段话或者将所有xml文件放到src/main/resource目录下
<resources>
<!--编译之后不包含xml处理-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>