Quarkus集成Hibernate与PostgreSQL时遇WstxInputFactory找不到错误
问题:Quarkus集成Hibernate与PostgreSQL启动报错(缺失WstxInputFactory)
问题背景
我正在学习Quarkus后端开发,想要集成Hibernate与PostgreSQL,在Gradle中添加了以下两个依赖:
implementation("io.quarkus:quarkus-hibernate-orm-panache") implementation("io.quarkus:quarkus-jdbc-postgresql")
启动时抛出错误,查阅相关帖子后推测是依赖冲突导致,可能存在不同版本的库,但已花费5小时尝试多种方案仍未解决。
版本信息:
- Quarkus版本:3.1.2.Final
- Kotlin版本:1.8.10
启动错误日志
Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [error]: Build step io.quarkus.narayana.jta.deployment.NarayanaJtaProcessor#build threw an exception: javax.xml.stream.FactoryConfigurationError: Provider com.ctc.wstx.stax.WstxInputFactory not found at javax.xml.stream.XMLInputFactory.newInstance(Unknown Source) at com.arjuna.common.util.propertyservice.PropertiesFactoryStax.loadFromXML(PropertiesFactoryStax.java:46) at com.arjuna.common.util.propertyservice.AbstractPropertiesFactory.loadFromFile(AbstractPropertiesFactory.java:150) at com.arjuna.common.util.propertyservice.AbstractPropertiesFactory.getPropertiesFromFile(AbstractPropertiesFactory.java:102) at com.arjuna.common.util.propertyservice.AbstractPropertiesFactory.initDefaultProperties(AbstractPropertiesFactory.java:196) at com.arjuna.common.util.propertyservice.AbstractPropertiesFactory.getDefaultProperties(AbstractPropertiesFactory.java:62) at com.arjuna.common.util.propertyservice.PropertiesFactory.getDefaultProperties(PropertiesFactory.java:48) at io.quarkus.narayana.jta.deployment.NarayanaJtaProcessor.build(NarayanaJtaProcessor.java:124) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909) at io.quarkus.builder.BuildContext.run(BuildContext.java:282) at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) at java.base/java.lang.Thread.run(Thread.java:829) at org.jboss.threads.JBossThread.run(JBossThread.java:501)
当前build.gradle.kts依赖配置
dependencies { implementation(enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")) implementation("io.quarkus:quarkus-arc") implementation("io.quarkus:quarkus-kotlin") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("io.quarkus:quarkus-cache") // Local cache in-memory implementation("io.quarkus:quarkus-resteasy-reactive") implementation("io.quarkus:quarkus-resteasy-reactive-jackson") implementation("io.quarkus:quarkus-rest-client-reactive") implementation("io.quarkus:quarkus-rest-client-reactive-jackson") implementation("io.quarkus:quarkus-hibernate-orm-panache") implementation("io.quarkus:quarkus-jdbc-postgresql") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") }
解决方案
1. 显式添加Woodstox依赖
错误提示缺失的com.ctc.wstx.stax.WstxInputFactory属于Woodstox库,这是Narayana JTA扩展的依赖但未被自动引入。直接在dependencies块中添加:
implementation("com.fasterxml.woodstox:woodstox-core")
2. 排查依赖冲突
执行Gradle命令分析依赖树,查看是否有依赖排除了Woodstox:
./gradlew dependencies --configuration compileClasspath
在输出中查找woodstox-core相关条目,若发现被某个依赖排除,在对应依赖上调整排除规则,确保Woodstox被正确引入。
3. 升级Quarkus版本
Quarkus 3.1.2.Final可能存在该依赖缺失的已知问题,尝试升级到更高的稳定版本(如3.2.x或3.3.x系列),新版本通常会修复这类依赖引入问题。
内容的提问来源于stack exchange,提问作者Barrufet
相关产品推荐
相关产品推荐

