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

SSH整合jar包冲突问题

2016-04-21 10:32 465 查看
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 这个包从项目的加载路径里面删除就行了。 

至于加载配置文件,就不详细的说了,方法很多,只要保证都在项目启动的时候加载上了就行啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ssh2