SSH整合jar包冲突问题

ssh2 jar包配置

本文中ssh指:struts2,srping2.5,hibernate3.2

 struts2必须JAR包(6个):
 struts2-spring-plugin-2.0.11.2.jar
 xwork-2.0.5.jar
 struts2-core-2.0.11.2.jar
 freemarker-2.3.8.jar
 ognl-2.6.11.jar
 commons-logging-1.0.4.jar(与hibernate3.2必须JAR包重复,取一个既可)
 
 hibernate3.2必须JAR包(8个):
 antlr-2.7.6.jar
 commons-collections-2.1.1.jar
 commons-logging-1.0.4.jar
 dom4j-1.6.1.jar
 ehcache-1.2.3.jar
 hibernate3.jar
 jta.jar
 log4j-1.2.11.jar
 
 spring2.5必须JAR包(5个):
 spring.jar
 asm-2.2.2.jar (*)
 asm-commons-2.2.2.jar (*)
 asm-util-2.2.2.jar (*)
 cglib-nodep-2.1_3.jar (*)

 以上四个标*的jar包,hibernate,spring都有提供,但是一定要用spring下的,不然当部署到tomcat下,应用启动的时候会报如下错误:(血的教训啊)
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name ’sessionFactory’ defined in  ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is   net.sf.cglib.core.CodeGenerationException: Java.lang.reflect.InvocationTargetException–>null
 另外:tomcat的缓存常常会出问题,你明明更新了,可是始终启动不了,这时你可以试着重启一下tomcat。

(activation.jar;antlr-2.7.2.jar;antlr-2.7.6.jar;asm.jar;cglib-2.1.3.jar;commons-beanutils-1.6.jar;commons-chain-1.1.jar;
commons-collections-2.1.1.jar;commons-digester-1.8.jar;commons-logging-1.0.4.jar;commons-logging-api-1.1.jar;commons-validator-1.3.0.jar;dom4j-1.6.1.jar;ehcache-1.2.jar;file.txt;freemarker-2.3.8.jar;hibernate3.jar;jstl.jar;jta.jar;log4j-1.2.11.jar
log4j-1.2.15.jar;mail.jar;MySQL-connector-java-5.0.4-bin.jar;mysql-connector-java-5.0.7-bin.jar;ognl-2.6.11.jar;oro-2.0.8.jar;spring.jar;standard.jar;struts-core-1.3.8.jar;struts-extras-1.3.8.jar;struts-taglib-1.3.8.jar;struts-tiles-1.3.8.jar;)


Dos命令窗口中,开始->运行->cmd打开窗口,到需要文件名的目录,用dir /B > file.txt就可以完成了。然后打开file.txt,Cut and Paste到你想放的位置。呵呵,是不是很简单呀。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yiyiyi345/archive/2009/10/04/4631610.aspx

 

 

 

Error one: 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
Caused by: 
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool

原因:
  在夏昕写的spring开发指南里,如果学习使用dbcp配置的时候,可能会发生这样一个错误: 连数据库连接池的时候发生了java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
      该问题的产生是由于没有引入dbcp所依赖jar文件,看看apache官方的申明:“Commons-DBCP depends at runtime on commons-pool and commons-collections”。


解决方法:

在eclipse里面将这两个jar文件引入,ok,问题解决。


Error two:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)


原因:

在使用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.2.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

自己的一个小测试: (运行环境:apache-tomcat-5.5.15 + .MyEclipse_5.5GA_E3.2.2 )
整合ssh项目中, 在 Tomcat 部署的环境中 D:/tomcat/webapps/my/WEB-INF/lib 发生了点异常:同时有 asm.jar、asm-attrs.jar、asm-2.2.3.jar 、 asm-commons-2.2.3.jar
asm-util-2.2.3.jar、 cglib-nodep-2.1_3.jar     在启动tomcat中不会出现异常信息。(我想asm-2.2.3jar可能在一定程度上作了改进。)

当 在D:/tomcat/webapps/my/WEB-INF/lib 下加入 cglib-2.1.3.jar 会报上面的java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit错误信息。 说明cglib-2.1.3.jar与其它包发生了冲突。

Error three:

at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:408)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: net/sf/hibernate/Session
java.lang.NoClassDefFoundError: net/sf/hibernate/Session  at java.lang.Class.getDeclaredMethods0(Native Method)

原因 :
在写dao 时,导入包出错了!
import org.springframework.orm.hibernate.support.HibernateDaoSupport;

解决方法:注意在导包时,要仔细了!

package com.jhl.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.jhl.po.User;

public class UserDao extends HibernateDaoSupport {

    public void save(User user) {

        this.getHibernateTemplate().save(user);
    }
}

 

Error four:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass
Caused by: 
java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass


原因:hibernate3.jar和hibernate-annotations.jar)的问题。


解决方法:把hibernate-annotations.jar直接去掉就OK了!


总结:

运行环境:apache-tomcat-5.5.15 + .MyEclipse_5.5GA_E3.2.2

我觉得报以上种种的原因:主要是在spring version的选择上,最好选择 spring version 1,若选spring version 2(最容易报这样和那样的错了)
它下面的(spring1.2 AOP Libraries 、spring 1.2 Core Libraries、spring 1.2 ORM/DAO/Hibernate3Libraries、spring 1.2 Web Libraries)

struts1.2 + spring 1 + Hibernate3.1

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jihuanliang/archive/2008/04/22/2316223.aspx

 

 

 

你在加的时候按这个顺序来加Struts--Spring--Hibernate,有重复包的时候不要替换就没问题了 
方法一: 
在使用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包。
源自javaeye
 今天联系三大框架的整合,我先加了struts框架,建了一个login.jsp;一个LoginForm.java和一个LoiginAction.java 

第二步我又加入spring框架。最后我加入的hibernage框架。利用逆向工程生成了.hbm文件和User.java文件等。可是运行服务器发布的时候就是出错。严重: action: null 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionfactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor 

我用的是MyEclipse 5.5.1 GA开发的,struts1.2+spring2.0+hibernate3.1. 

怀疑是包冲突的问题,还是MyEclipse 版本的问题? 
answer。1
sessionfactory 创建有问题, 

org/objectweb/asm/CodeVisitor  没有找到这个类 

1.没有导入asm.jar 
2.导入了多个不同版本的asm-XXXX.jar
answer。2
在使用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
asnwer3
我先把3个框架搭建的顺序给你说一下 你再重新搭建一下吧 

1,首先加入add Spring 
2,add Hibernate 
3,add Struts1或者struts2 

这样的话 接下来就是你配置文件事情了 。。。。 

首先你配置顺序出错 的话肯定搭建不起来。。 

详细的就不说了   比较繁琐 但很简单
answer4
如果需要高级的应用再选上hibernate 3.1 Advanced Support libraries 
如果要将hibernate-config.xml和applicationContext.xml整合的话,就在接下来选择spring configuration file(applicationContext.xml) 

这一项。 
  如果选择了整合在一起的话,就在接下来点选existing spring configuration file这一项。 
  最后一步,就是在配置数据源的文件里把驱动的类改一下,就是把“org.apache.commons.dbcp.BasicDataSource”改成 

“org.springframework.jdbc.datasource.DriverManagerDataSource”。 
再把asm.jar 这个包从项目的加载路径里面删除就行了。 
至于加载配置文件,就不详细的说了,方法很多,只要保证都在项目启动的时候加载上了就行啦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值