您的位置:首页 > 编程语言 > Java开发

java项目转maven项目相关步骤与问题处理

2017-07-19 15:14 633 查看
项目背景介绍: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>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: