【问题标题】:hibernate3-maven-plugin dependencies for newer version of hibernatehibernate3-maven-plugin 依赖于较新版本的休眠
【发布时间】:2011-02-13 15:59:20
【问题描述】:

我想将 hibernate-3.5-1.Final 和这个插件一起使用,我在这里的依赖项应该是什么。它似乎正在拿起一组旧的罐子,现在失败了。

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>hibernate3-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>

编辑1:

[INFO] class org.hibernate.cfg.ExtendedMappings has interface org.hibernate
.cfg.Mappings as super class
[INFO] --------------------------------------------------------------------
----
[INFO] Trace
java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMap
pings has interface org.hibernate.cfg.Mappings as super class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.ja
va:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmC
lassLoader.java:195)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClas
sRealm.java:255)
        at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLo
ader.java:214)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at org.hibernate.cfg.AnnotationConfiguration.createExtendedMappings
(AnnotationConfiguration.java:187)
        at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(Anno
tationConfiguration.java:277)
        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java
:1206)
        at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configurat
ion.java:1226)
        at org.hibernate.ejb.EventListenerConfigurator.configure(EventListe
nerConfigurator.java:173)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.
java:854)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.
java:191)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.
java:253)

【问题讨论】:

    标签: hibernate maven-2 hibernate3


    【解决方案1】:

    我能够使用以下一组依赖项(即所有休眠 jar 的 3.5.1-Final)来解决这个问题

                    <dependencies>
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-core</artifactId>
                            <version>${hibernate-core.version}</version>
                        </dependency>
    
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-entitymanager</artifactId>
                            <version>${hibernate-entitymanager.version}</version>
                        </dependency>
    
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-annotations</artifactId>
                            <version>${hibernate-annotations.version}</version>
                        </dependency>
    
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>ejb3-persistence</artifactId>
                            <version>3.3.2.Beta1</version>
                        </dependency>
    
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-tools</artifactId>
                            <version>${hibernate-tools.version}</version>
                        </dependency>
                    </dependencies>
    

    【讨论】:

    • 很高兴它正在工作,但我仍然不明白你到底做了什么以及你在哪里声明了这些依赖项(在插件内?)。顺便说一句,理论上你不应该声明 hibernate-core 和 hibernate-annotations,hibernate-entitymanager 会传递地拉取它们。而且我认为 JPA 2.0 不需要 ejb3-persistence。
    • 我为 hibernate3-maven-plugin 添加了这些依赖项。如果没有最新版本的 ejb3-persistence,它将无法工作。
    • 这也适用于我。我还可以为 hibernate-tools JAR 省略 &lt;dependency&gt;,因为我找不到它的更新版本,而旧的 hibernate-tools 版本似乎可以与更新的 hibernate-core 和 ejb3-persistence 一起正常工作人工制品。
    【解决方案2】:

    很难说到底发生了什么,但事实是 2.2. hibernate3-maven-plugin 声明 hibernate-core 3.3.1.GAhibernate-tools 3.2.3.GA 为依赖项,并针对这些版本进行编译。您是否尝试更换它们?如果是,我认为您不能(尤其是因为它们似乎引入了不兼容的更改)。

    话虽如此,这不应阻止您在项目中将 hibernate-entitymanager-3.5.1-Final 声明为依赖项并让插件使用其他版本(这应该是默认行为)。

    【讨论】:

    • 谢谢我昨天用上面提到的依赖项完成了这个工作。它需要上述所有依赖项,而不仅仅是核心 jar
    【解决方案3】:

    我也有类似的问题。

    运行“mvn dependency:tree”后,我看到 unitils-dbunit:3.1 依赖于较旧的 hibernate.jar...

    [INFO] +- org.unitils:unitils-dbunit:jar:3.1:test
    [INFO] |  +- org.unitils:unitils-core:jar:3.1:test
    [INFO] |  |  +- commons-logging:commons-logging:jar:1.1:test
    [INFO] |  |  +- commons-lang:commons-lang:jar:2.5:test (version managed from 2.3)
    [INFO] |  |  \- ognl:ognl:jar:2.6.9:test
    [INFO] |  +- org.unitils:unitils-database:jar:3.1:test
    [INFO] |  |  +- org.unitils:unitils-dbmaintainer:jar:3.1:test
    [INFO] |  |  |  \- org.hibernate:hibernate:jar:3.2.5.ga:test
    

    移动 Hibernate 库之前 unitils 依赖解决了这个问题。订单很重要。

    祝你好运, J.

    【讨论】:

      【解决方案4】:

      对于 Hibernate 3.6.0.Final,我将插件设置如下:

      <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>hibernate3-maven-plugin</artifactId>
          <version>2.2</version>
          <dependencies>
              <dependency>
                  <groupId>xerces</groupId>
                  <artifactId>xercesImpl</artifactId>
                  <version>2.9.1</version>
              </dependency>
              <dependency>
                  <groupId>org.hibernate</groupId>
                  <artifactId>hibernate-core</artifactId>
                  <version>3.6.0.Final</version>
              </dependency>
              <dependency>
                  <groupId>org.hibernate</groupId>
                  <artifactId>hibernate-entitymanager</artifactId>
                  <version>3.6.0.Final</version>
              </dependency>
              <dependency>
                  <groupId>org.hibernate</groupId>
                  <artifactId>hibernate-validator</artifactId>
                  <version>4.1.0.Final</version>
              </dependency>
              <dependency>
                  <groupId>com.microsoft</groupId>
                  <artifactId>sqljdbc4</artifactId>
                  <version>3.0.1301</version>
              </dependency>
          </dependencies>
      </plugin>
      

      【讨论】:

        【解决方案5】:

        这个解决方案对我来说是最好的。只需添加一个依赖项,它将添加其余必要的依赖项:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.2.1.Final</version>
        </dependency>
        

        这里是最新版本:http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager

        【讨论】:

          猜你喜欢
          • 2020-03-29
          • 1970-01-01
          • 2016-09-18
          • 2019-03-03
          • 2015-01-05
          • 2020-07-26
          • 2019-01-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多