带有常规插件2.3.8的Struts2 2.3.8不适用于hibernate 3.2.5(netbeans fw插件)

时间:2012-12-27 22:52:42

标签: hibernate plugins struts2 conflict convention

我想一起使用Struts2约定插件(2.3.8) 使用hibernate(netbeans框架插件3.2.5), 但两个不同之前存在冲突 asm.jar版本。

Hibernate与struts2 fw工作正常,但是当我添加convention插件时,我收到错误:

java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
  • Hibernate 3.2.5需要 asm.jar
  • Struts2约定插件需要 asm-3.3.jar

IMHO约定插件需要类:ClassWriter,它位于asm-3.3.jar中,但是 看着asm.jar。

  • 使用maven测试(没有冲突,但没有运行)
  • 在没有maven(未运行)的情况下进行测试

当hibernate 3.2.5无法更改为更高版本时,是否有任何解决方案可以达到此目的?

3 个答案:

答案 0 :(得分:0)

一个hack会更新hibernate插件库asm.jar和asm-3.3.jar。您需要使用asm-3.3.jar检查Hiberate是否存在特定问题。

如果这不起作用那么我能想到的一些事情

  • Modularize(将hibernate相关类作为子项目移动并将库限制为子项目)
  • 如果上述情况不可能,那么在调用堆栈中找一个位置来操作类加载器缓存(丢弃加载的类并从特定的jar加载等等)。就个人而言,这将是痛苦的维持。

Related post

答案 1 :(得分:0)

如果可以,请尝试将Hibernate升级到最新版本,该版本使用与Struts 2.3.8相同版本的asm库。您也可以尝试从Hibernate集中排除asm库 - 使用Maven,您必须添加部分。

答案 2 :(得分:0)

恕我直言,问题不在图书馆冲突中。我正在使用Hibernate 3.2.5.gaStruts 2.3.7仅使用asm库。我在项目中使用的库(仅涉及HibernateStruts)是:

 ├── hibernate
 │   ├── dom4j-1.6.1.jar
 │   ├── ehcache-1.2.3.jar
 │   ├── hibernate3.jar
 │   ├── hibernate-annotations.jar
 │   ├── hibernate-commons-annotations.jar
 │   ├── hibernate-entitymanager.jar
 │   ├── hibernate-tools.jar
 │   ├── javassist.jar
 │   ├── jdbc2_0-stdext.jar
 │   └── jta.jar
 ├── struts-2.3.7
     ├── antlr-2.7.2.jar
     ├── asm-3.3.jar
     ├── asm-commons-3.3.jar
     ├── cglib-nodep-2.2.2.jar
     ├── commons-beanutils-1.8.0.jar
     ├── commons-collections-3.1.jar
     ├── commons-digester-2.0.jar
     ├── commons-fileupload-1.2.2.jar
     ├── commons-io-2.0.1.jar
     ├── commons-lang-2.5.jar
     ├── commons-lang3-3.1.jar
     ├── commons-logging-1.1.1.jar
     ├── freemarker-2.3.19.jar
     ├── ognl-3.0.5.jar
     ├── struts2-convention-plugin-2.3.7.jar
     ├── struts2-core-2.3.7.jar
     ├── struts2-fullhibernatecore-plugin-2.2.2-GA.jar
     ├── struts2-json-plugin-2.3.7.jar
     └── xwork-core-2.3.7.jar