2

I'm trying to add hibernate-envers to one of our Spring MVC project. My entity classes are in separate maven module and I'm using envers there and then install this as local maven repo and use in my actual Spring project as dependency. Everything works okay without envers. My dependency tree in Spring project for hibernate is:

[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] +- org.hibernate:hibernate-core:jar:5.3.9.Final:compile
[INFO] |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final:compile
[INFO] +- org.hibernate:hibernate-ehcache:jar:5.3.9.Final:compile
[INFO] |  \- (org.hibernate:hibernate-core:jar:5.3.9.Final:compile - omitted for duplicate)
[INFO] +- org.hibernate:hibernate-spatial:jar:5.3.9.Final:compile
[INFO] |  \- (org.hibernate:hibernate-core:jar:5.3.9.Final:compile - omitted for duplicate)
[INFO] +- az.asdf.dcs:az.asdf.dcs.core:jar:1.1:compile
[INFO] |  +- (org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile - omitted for duplicate)
[INFO] |  +- (org.hibernate:hibernate-core:jar:4.3.6.Final:compile - omitted for conflict with 5.3.9.Final)
[INFO] |  +- (org.hibernate:hibernate-spatial:jar:4.3-SNAPSHOT:compile - omitted for conflict with 5.3.9.Final)
[INFO] |  \- (org.hibernate:hibernate-envers:jar:5.3.9.Final:compile - omitted for duplicate)
[INFO] \- org.hibernate:hibernate-envers:jar:5.3.9.Final:compile
[INFO]    \- (org.hibernate:hibernate-core:jar:5.3.9.Final:compile - omitted for duplicate)

and for Spring dependencies:

[INFO] +- org.springframework:spring-core:jar:4.3.3.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:4.3.3.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:4.3.3.RELEASE:compile
[INFO] |  |  +- (org.springframework:spring-beans:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-beans:jar:4.3.3.RELEASE:compile
[INFO] |  |  \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-context:jar:4.3.3.RELEASE:compile
[INFO] |  |  +- (org.springframework:spring-aop:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-beans:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  \- (org.springframework:spring-expression:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-expression:jar:4.3.3.RELEASE:compile
[INFO] |  |  \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  \- org.springframework:spring-web:jar:4.3.3.RELEASE:compile
[INFO] |     +- (org.springframework:spring-aop:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |     +- (org.springframework:spring-beans:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |     +- (org.springframework:spring-context:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |     \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework:spring-tx:jar:4.3.3.RELEASE:compile
[INFO] |  +- (org.springframework:spring-beans:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework:spring-orm:jar:4.3.3.RELEASE:compile
[INFO] |  +- (org.springframework:spring-beans:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-jdbc:jar:4.3.3.RELEASE:compile
[INFO] |  |  +- (org.springframework:spring-beans:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  \- (org.springframework:spring-tx:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] |  \- (org.springframework:spring-tx:jar:4.3.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework:spring-aspects:jar:4.3.3.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-core:jar:4.2.4.RELEASE:compile
[INFO] |  +- (org.springframework:spring-aop:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-beans:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-context:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-core:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  \- (org.springframework:spring-expression:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] +- org.springframework.security:spring-security-web:jar:4.2.4.RELEASE:compile
[INFO] |  +- (org.springframework.security:spring-security-core:jar:4.2.4.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-beans:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-context:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-core:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-expression:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  \- (org.springframework:spring-web:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] +- org.springframework.security:spring-security-config:jar:4.2.4.RELEASE:compile
[INFO] |  +- (org.springframework.security:spring-security-core:jar:4.2.4.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-aop:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-beans:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  +- (org.springframework:spring-context:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] |  \- (org.springframework:spring-core:jar:4.3.12.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO] \- az.asdf.dcs:az.asdf.dcs.core:jar:1.1:compile
[INFO]    \- org.springframework.data:spring-data-cassandra:jar:2.0.2.RELEASE:compile
[INFO]       +- (org.springframework:spring-context:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO]       +- (org.springframework:spring-beans:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO]       +- (org.springframework:spring-core:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO]       +- (org.springframework:spring-tx:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO]       +- (org.springframework:spring-expression:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO]       \- org.springframework.data:spring-data-commons:jar:2.0.2.RELEASE:compile
[INFO]          +- (org.springframework:spring-core:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)
[INFO]          \- (org.springframework:spring-beans:jar:5.0.2.RELEASE:compile - omitted for conflict with 4.3.3.RELEASE)

I don't see any version conflicts here. But when I try to run I get this exception:

Unsatisfied dependency expressed through field 'sessionFactory'; 
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'sessionFactory' defined in class path resource [Spring-Hibernate.xml]:
Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.envers.configuration.internal.GlobalConfiguration.<init>(Lorg/hibernate/envers/boot/internal/EnversService;Ljava/util/Map;)V]]

Any suggestions are welcome.

UPDATE: Here are my pom.xml's in both core and Spring projects:

Core module:

<dependencies>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.6.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-spatial</artifactId>
        <version>4.3-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-envers -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
        <version>5.3.9.Final</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-cassandra</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>

</dependencies>

Spring project:

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springframework.version>4.3.3.RELEASE</springframework.version>
    <spring.security.version>4.2.4.RELEASE</spring.security.version>
    <hibernate.version>5.3.9.Final</hibernate.version>
</properties>

<dependencies>
    <!--Spring resources-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <!-- Spring + aspects -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>${springframework.version}</version>
    </dependency>

    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency> 
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <!--Spring resources-->
    <!--Hybernate resources-->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-spatial</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <!--Hybernate resources-->
    <!-- Apache Commons Upload -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>
    <!-- Apache Commons Upload -->
    <!--for Log-->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <!--for Log-->
    <!---->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4.1211.jre7</version>
    </dependency>
    <!--Jackson JSON Parser-->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.7.5</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.6.3</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.paho</groupId>
        <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
        <version>1.1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.11</version>
    </dependency>


    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>az.asdf.dcs</groupId>
        <artifactId>az.asdf.dcs.core</artifactId>
        <version>1.1</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.asteriskjava/asterisk-java -->
    <dependency>
        <groupId>org.asteriskjava</groupId>
        <artifactId>asterisk-java</artifactId>
        <version>2.0.2</version>
    </dependency>

</dependencies>
Joshgun
  • 372
  • 3
  • 16

2 Answers2

0

spring-core, spring-webmvc, spring-tx are already inside spring-orm.
Check here : https://mvnrepository.com/artifact/org.springframework/spring-REPLACE-ME/usages

Same stuff for spring-sercurity-web spring-security-core are inside spring-security-config
You also have conflicts with versions on depndencies logged with

omitted for conflict with 4.3.3.RELEASE
IQbrod
  • 2,060
  • 1
  • 6
  • 28
  • Duplicate dependencies are already omitted as I see in dependency tree. Also I don't think it's related to Spring dependencies because It works properly without hibernate-envers. For testing I've commented out the "redundant" dependencies but now it throws another exception during startup about BeanDefinitionParsing. btw link is not working – Joshgun Aug 16 '19 at 10:28
  • but still more readable, 2/3 dependencies of your project are duplicated and it's unreadable atm. Plus many dependencies might result in conflicts in terms of version as you may see in your logs. – IQbrod Aug 16 '19 at 12:04
  • Link is not working becasue you need to replace "REPLACEME" by your spring dependency – IQbrod Aug 16 '19 at 12:05
  • oh my bad :) after all it's still not working, it's not related to spring dependencies – Joshgun Aug 16 '19 at 12:41
0

Your dependencies clearly state that you're trying to use Hibernate ORM 4.3.6.Final with Hibernate Envers 5.3.9.Final in your code module. As others have mentioned several times this is a dependency conflict.

In short the version of Hibernate Envers should be identical to that of Hibernate Core.

Naros
  • 19,928
  • 3
  • 41
  • 71
  • I've removed conflicting dependencies but result still same. Also "4.3.6.Final:compile - omitted for conflict with 5.3.9.Final" this is not stating to conflict, it's clearly stating that already omitted. – Joshgun Aug 20 '19 at 06:54