【问题标题】:javassist_123 incompatible with javassist.util.proxy.Proxy?javassist_123 与 javassist.util.proxy.Proxy 不兼容?
【发布时间】:2019-06-11 12:33:00
【问题描述】:

在Spring4+ jpa + websphere8.5.5.13上有应用

我为实体添加了历史记录,尝试获取此历史记录时出现错误消息

javassist_123 与 javassist.util.proxy.Proxy 不兼容

但是在 tomcat 服务器上有正确的工作,所以 pom.xml

    <properties>
        <java.version>1.8</java.version>
        <spring.version>4.3.13.RELEASE</spring.version>
        <javax.servlet>3.0.1</javax.servlet>
        <hb.enity.manager>4.2.21.Final</hb.enity.manager>
        <spring.test>3.2.4.RELEASE</spring.test>
        <junit.version>4.11</junit.version>
        <slf4j.version>1.7.25</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>
    <dependencies>
        <!--SPRING-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.11.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- SERVLET-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${javax.servlet}</version>
            <scope>provided</scope>
        </dependency>
        <!--JACKSON AND XML-->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!--DATABASE-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.2.21.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>org.javassist</groupId>
                    <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.oracle.odb</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-envers</artifactId>
            <version>4.2.21.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>org.javassist</groupId>
                    <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.22.0-GA</version>
        </dependency>
        <!--APACHE-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>javassist</artifactId>
                    <groupId>jboss</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
            <exclusions>
                <exclusion>
                    <artifactId>javassist</artifactId>
                    <groupId>jboss</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <!--TEST-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
        </dependency>
        <!--LOG4J-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>
</project>

休眠属性是:

private Properties getHibernateProperties() {
    Properties properties = new Properties();
    properties.put("hibernate.dialect", "org.hibernate.dialect.OracleDialect");
    properties.put("hibernate.show_sql", "true");
    properties.put("hibernate.hbm2ddl.auto", "none");
    properties.put("org.hibernate.envers.do_not_audit_optimistic_locking_field", true);



properties.put("verifyServerCertificate", false);
    properties.put("useSSL", false);
    properties.put("requireSSL", false);
    properties.put("useLegacyDatetimeCode", false);
    properties.put("useUnicode", "yes");
    properties.put("characterEncoding", "UTF-8");
    properties.put("serverTimezone", "UTC");
    properties.put("useJDBCCompliantTimezoneShift", true);
    return properties;
}

有人遇到过这个问题吗?

【问题讨论】:

  • 好的,运行 mvn dependency:tree -Dverbose 看看你从那里得到了什么。在您的某些库中,您使用的 javaassist 版本低于 3.16.1-GA。
  • @MS90 不,只有一个依赖 org.javassist:javassist:jar:3.22.0:compile
  • 好的,所以这个 jar 库与您的代码不兼容。尝试将其更改为较低或当前的 GA 版本。根本不要使用已编译的。你可能在编译时搞砸了。
  • org.javassistjavassist3.22.0-GA
  • 是的,使用其他版本。

标签: java spring hibernate-envers


【解决方案1】:

通过迁移解决

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
        <version>4.2.21.Final</version>
</dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
        <version>4.0.1.Final</version>
    </dependency>

【讨论】:

  • 不是解决方案,主要是因为您绝不应该使用不同于hibernate-corehibernate-entitymanagerhibernate-envers 版本。这些工件是一起构建的,应该使用相同的版本进行部署,以避免任何运行时兼容性问题。 Hibernate 4.2.21 依赖于 Javassist 版本 3.18.1-GA,您可以在 maven Central 上找到它。
  • @NarosI 已经说过 javassist 3.18 的解决方案不起作用,其他不同的版本也是如此。
  • 然后您需要检查您的环境的依赖关系树并查看可能导致冲突的原因,因为您似乎有一些其他库强制依赖项使用不兼容的版本。
猜你喜欢
  • 2016-10-12
  • 2018-07-04
  • 2020-10-27
  • 2013-03-14
  • 2016-07-09
  • 2020-10-31
  • 2019-04-30
  • 2012-04-29
  • 2021-10-04
相关资源
最近更新 更多