java - 由于 Maven 的 SLF4J 模块加载错误,Hibernate 无法在 Wildfly 上序列化对象

标签 java hibernate maven slf4j wildfly-8

我对 J2EE 还很陌生,所以要温柔一点...

我正在使用 Wildfly (JBOSS) 8.2.0.Final,但我遇到了 hibernate 问题。每次我尝试反序列化一个对象时,我都会从 hibernate 收到错误:

Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.Slf4jLogger 
from [Module "org.hibernate:main" from local module loader @4253c155 
(finder: local module finder @8b9d578 (roots: C:\dev\wildfly-8.2.0.Final\modules,
C:\dev\wildfly-8.2.0.Final\modules\system\layers\base))]

据我了解 SLF4J 的狂野世界,wildfly 有一个自定义实现,正确的做法是从依赖项中排除对 org.slf4j 以外的所有引用,并将 slf4j-api 包含在依赖项中。我可以确认我的 lib 文件夹中确实有 slf4j-api JAR,但我不知道如何开始调试它。请注意,应用程序的其他方面正在加载并正确记录,只有当我尝试反序列化 hibernate 尝试记录的内容并因此异常而失败时。

以下是 pom 的一些摘录:

<!-- logging -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <scope>provided</scope>
</dependency>   

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ejb-plugin</artifactId>
    <configuration>
        <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
            <manifestEntries>
                <Dependencies>org.slf4j org.apache.xerces services</Dependencies>
                <Class-Path>xxx-myproject-${project.version}.jar</Class-Path>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

最佳答案

当前正在下载的slf4j与当前的Hibernate版本不匹配。您尝试将 slf4j 现有依赖项替换为以下依赖项,或者在 Maven 依赖项中提供特定版本。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>

关于java - 由于 Maven 的 SLF4J 模块加载错误,Hibernate 无法在 Wildfly 上序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34304334/

相关文章:

java - 修复 java.net.SocketTimeoutException : Read timed out

java - Spring Boot 加载 orm.xml

java - 如何访问java属性文件

java - Liquibase 与 Tapestry 和 Hibernate 集成 : initial schema creation step

java - 使用 PostgreSQL 和 Tomcat 的简单 Web 应用程序

java - 使用 Hibernate 实现具有内容比较的版本控制功能的最佳方法是什么?

java - 创建名为 'sessionFactory' 的 bean 时出错 - 嵌套异常为 java.lang.NoClassDefFoundError :

java - 如何在Java中调用以回调为参数的函数

java - Spring boot (Maven) 运行时未找到外部 jar 类

java - maven javadoc :fix fails to autofix docs