【问题标题】:Struts2 2.3.8 with convention plugin 2.3.8 doesnt work with hibernate 3.2.5(netbeans fw plugin)带有约定插件 2.3.8 的 Struts2 2.3.8 不适用于休眠 3.2.5(netbeans fw 插件)
【发布时间】:2012-12-13 07:05:27
【问题描述】:

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

Hibernate 在 struts2 fw 上工作正常,但是当我添加约定插件时,我得到错误:

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

恕我直言,约定插件需要类:ClassWriter,位于 asm-3.3.jar 中,但是 查看 asm.jar。

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

当hibernate 3.2.5无法更改为更高版本时,有什么解决方案可以实现吗?

【问题讨论】:

    标签: hibernate plugins struts2 conflict convention


    【解决方案1】:

    恕我直言,问题不在于库冲突。我将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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        如果这行不通,那么我能想到的东西很少

        • 模块化(将hibernate相关类移动为子项目,将库限制为子项目)
        • 如果上述方法不可行,则在调用堆栈中寻找一个位置来操作类加载器缓存(丢弃加载的类并从特定的 jar 加载等等)。就个人而言,这将是痛苦的维护。

        Related post

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-19
          • 2020-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多