用MyEclipse 整合ssh的时候是否有 jar包的冲突呢?

时间:2021-06-18 20:35:09
我用的 是 Myeclipe6.0 + spring1.2 + tomcat5.5 + struts 1.2 + hibernate 3.1
在加入支持的时候.. 是不是会有 不同名字 但内容相同的包冲突呢 ?

12 个解决方案

#1


版本会有不同的 情况出现

#2


全面名字都一样 只是后面加了个 —1.0或者-1.1去掉 老版本 留下新版本 ,

#3


Myeclipe6.0已经带了SSH的包,你直接通过Myeclipe6.0导入的话,不会有冲突问题的

#4


引用 3 楼 lw788 的回复:
Myeclipe6.0已经带了SSH的包,你直接通过Myeclipe6.0导入的话,不会有冲突问题的

好像自带的总是出问题哦

#5


hibernate有冲突的包

#6


1 如果有老版本的,那得看运气了,排在前面的会优先加载,至于哪个优先? 这就是运气,一般文件名靠前的。

2 如果都是新版本或者都是统一的版本。没有任何关系,因为相同的CLASS, 容器只会加载一次。

相同的Class = Package + ClassName 都相同的,而不管内部版本问题

#7


你在加的时候按这个顺序来加Struts--Spring--Hibernate,有重复包的时候不要替换就没问题了!

#8


同意楼上的
按照S(Struts)->S(Spring)->H(Hibernate)的顺序加载,提示有重名的Jar包时不要替换就OK了
我一直没有遇到过Jar包冲突的问题!

#9


 方法一:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar

Hibernate使用如果lib:
asm.jar
asm-attrs.jar


其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。


解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar

2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar

 
 
 
 
方法二:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar

Hibernate使用如果lib:
asm.jarasm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突。
使用其中之一或两者都使用,可能会出现如下错误: java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitorjava.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitorjava.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit

下面是解决方法手工编辑你的.classpath文件,比如我这个(只有部分内容)

<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_CORE"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_DAO"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_AOP"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_WEB"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.hibernate.MYECLIPSE_HIBERNATE3_1_CORE"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mysql-connector-java-5.0.4-bin.jar"/>

将最后2行hibernate和mysql驱动,手工复制到springframework的lib前面。
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.hibernate.MYECLIPSE_HIBERNATE3_1_CORE"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mysql-connector-java-5.0.4-bin.jar"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_CORE"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_DAO"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_AOP"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_WEB"/>

现在你再试试启动,应该不会报错了。

我这里用了myeclipse的jar包。如果你是自定义用户库jar包,那么只要保证spring的jar包在hibernate之后加载,项目在部署的时候spring的jar包就会覆盖掉hibernate的jar包。

#10


真的是个好麻烦的事. 
我都有点绝望了.. 
真谢谢这么多人帮我...
分不多.. 
但是很感激你们..
谢谢.!

#11


知道了     以后就会解决了

#12


其实在加载Spring时,只要添加相应的jar包,然后把一两个冲突的jar包删除也就不存在,jar包冲突的问题了!

#1


版本会有不同的 情况出现

#2


全面名字都一样 只是后面加了个 —1.0或者-1.1去掉 老版本 留下新版本 ,

#3


Myeclipe6.0已经带了SSH的包,你直接通过Myeclipe6.0导入的话,不会有冲突问题的

#4


引用 3 楼 lw788 的回复:
Myeclipe6.0已经带了SSH的包,你直接通过Myeclipe6.0导入的话,不会有冲突问题的

好像自带的总是出问题哦

#5


hibernate有冲突的包

#6


1 如果有老版本的,那得看运气了,排在前面的会优先加载,至于哪个优先? 这就是运气,一般文件名靠前的。

2 如果都是新版本或者都是统一的版本。没有任何关系,因为相同的CLASS, 容器只会加载一次。

相同的Class = Package + ClassName 都相同的,而不管内部版本问题

#7


你在加的时候按这个顺序来加Struts--Spring--Hibernate,有重复包的时候不要替换就没问题了!

#8


同意楼上的
按照S(Struts)->S(Spring)->H(Hibernate)的顺序加载,提示有重名的Jar包时不要替换就OK了
我一直没有遇到过Jar包冲突的问题!

#9


 方法一:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar

Hibernate使用如果lib:
asm.jar
asm-attrs.jar


其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。


解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar

2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar

 
 
 
 
方法二:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar

Hibernate使用如果lib:
asm.jarasm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突。
使用其中之一或两者都使用,可能会出现如下错误: java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitorjava.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitorjava.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit

下面是解决方法手工编辑你的.classpath文件,比如我这个(只有部分内容)

<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_CORE"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_DAO"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_AOP"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_WEB"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.hibernate.MYECLIPSE_HIBERNATE3_1_CORE"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mysql-connector-java-5.0.4-bin.jar"/>

将最后2行hibernate和mysql驱动,手工复制到springframework的lib前面。
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.hibernate.MYECLIPSE_HIBERNATE3_1_CORE"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mysql-connector-java-5.0.4-bin.jar"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_CORE"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_DAO"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_AOP"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.springframework.MYECLIPSE_SPRING20_WEB"/>

现在你再试试启动,应该不会报错了。

我这里用了myeclipse的jar包。如果你是自定义用户库jar包,那么只要保证spring的jar包在hibernate之后加载,项目在部署的时候spring的jar包就会覆盖掉hibernate的jar包。

#10


真的是个好麻烦的事. 
我都有点绝望了.. 
真谢谢这么多人帮我...
分不多.. 
但是很感激你们..
谢谢.!

#11


知道了     以后就会解决了

#12


其实在加载Spring时,只要添加相应的jar包,然后把一两个冲突的jar包删除也就不存在,jar包冲突的问题了!