Java 使用Tomcat和EclipseIDE进行Hibernate和Jersey冲突

Java 使用Tomcat和EclipseIDE进行Hibernate和Jersey冲突,java,eclipse,hibernate,tomcat,jersey,Java,Eclipse,Hibernate,Tomcat,Jersey,在我的项目中,我同时使用了Hibernate和Jersey,这与Hibernate有一个库冲突,Jersey从下面的链接中我得到了如下结果 Jersey使用ASM库,Hibernate也使用该库,但版本不同。Hibernate使用1.5.3版,Jersey使用3.5.1版。大不一样!我们不能仅仅删除旧版本而将新版本放在那里,因为它们在体系结构上是不同的。版本1.5.3有一个“attrs”包,而3.5.1没有,只有一个“signatures”包。 cglib包需要ASM包,它是Hibernate

在我的项目中,我同时使用了Hibernate和Jersey,这与Hibernate有一个库冲突,Jersey从下面的链接中我得到了如下结果

Jersey使用ASM库,Hibernate也使用该库,但版本不同。Hibernate使用1.5.3版,Jersey使用3.5.1版。大不一样!我们不能仅仅删除旧版本而将新版本放在那里,因为它们在体系结构上是不同的。版本1.5.3有一个“attrs”包,而3.5.1没有,只有一个“signatures”包。 cglib包需要ASM包,它是Hibernate库的一部分。如果我们删除该包,Jersey将正常工作,但Hibernate将停止工作。要解决此冲突,请使用cglib-nodep.jar而不是cglib.jar,并将ASM版本3.x保留在Jersey中。cglib-nodep.jar包含cglib.jar所需的一些ASM类,更改包名以避免任何类冲突。

但是在包括
asm-3.1.jar
asm-attrs-2.2.3.jar
asm-commons-3.1.jar
asm-util-3.1.jar
cglib-nodep-2.1\u 3sources.jar
之后,我遇到了错误:

如果我放置
cglib 2.1.3

java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
    at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
    at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)

请列出解决此问题所需的jar文件。

如果我没有弄错的话,cglib不再是Hibernate首选的字节码提供程序。相反,Javassist是,您可以使用以下命令强制Javassist:

hibernate.bytecode.provider=javassist
在Hibernate的最新版本中,这已经是默认行为。您必须拥有较旧版本的Hibernate,或者项目已经配置为使用cglib覆盖上述内容。因此,您可以更新Hibernate版本,或者将实例配置为使用javassist。配置在某种程度上取决于您的环境和所需内容。通常,在类路径的hibernate.properties文件中包含上述行。我认为您还可以将
-Dhibernate.bytecode.provider=javassist
添加到命令行,或者在JAVA_OPTS中添加JBoss配置


以及网络上的其他地方。只是Googlehibernate.bytecode.provider

我不明白,你能详细解释一下吗?我刚才扩展了我的答案。希望这有助于澄清。
hibernate.bytecode.provider=javassist