Wildfly Jboss NoClassDefFoundError:无法为 org/jboss/ws/core/jaxws/spi/ProviderImpl 链接错误
Posted
技术标签:
【中文标题】Wildfly Jboss NoClassDefFoundError:无法为 org/jboss/ws/core/jaxws/spi/ProviderImpl 链接错误【英文标题】:Wildfly Jboss NoClassDefFoundError: Failed to link Error for org/jboss/ws/core/jaxws/spi/ProviderImpl 【发布时间】:2021-06-24 16:34:53 【问题描述】:目前正致力于在 wildlfy 17 上部署一个 Web 应用程序(使用 Grails)。 WAR 已部署,但当我在运行时运行特定操作时,
我收到以下错误(堆栈跟踪缩小):
WARN [org.jboss.modules.define] (default task-18) Failed to define class org.jboss.ws.core.jaxws.spi.ProviderImpl in Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\Programs\Wildfly\modules,C:\Programs\Wildfly\modules\system\layers\base)): java.lang.NoClassDefFoundError: Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\IDeaS\CMA\G302\Programs\Wildfly\modules,C:\Programs\Wildfly\modules\system\layers\base))): javax/xml/ws/spi/Provider
ERROR [StackTrace] (default task-18) Full Stack Trace:: javax.xml.ws.WebServiceException: Error while searching for service [javax.xml.ws.spi.Provider]
Caused by: java.lang.NoClassDefFoundError: Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\Programs\Wildfly\modules,C:\\Programs\Wildfly\modules\system\layers\base))): javax/xml/ws/spi/Provider
ERROR [StackTrace] (default task-18) Full Stack Trace:: java.lang.NoClassDefFoundError: Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\Programs\Wildfly\modules,C:\Programs\Wildfly\modules\system\layers\base))): javax/xml/ws/spi/Provider
ERROR [StackTrace] (default task-18) Full Stack Trace:: javax.xml.ws.WebServiceException: Error while searching for service [javax.xml.ws.spi.Provider]
Caused by: java.lang.NoClassDefFoundError: Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\Programs\Wildfly\modules,C:\Programs\Wildfly\modules\system\layers\base))): javax/xml/ws/spi/Provider
ERROR [org.grails.web.errors.GrailsExceptionResolver] (default task-18) NoClassDefFoundError occurred when processing request: [POST] /cma/Sql/runQuery
Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\Programs\Wildfly\modules,C:\Programs\Wildfly\modules\system\layers\base))): javax/xml/ws/spi/Provider. Stacktrace follows:: javax.xml.ws.WebServiceException: Error while searching for service [javax.xml.ws.spi.Provider]
Caused by: java.lang.NoClassDefFoundError: Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader @68b6f0d6 (finder: local module finder @4044fb95 (roots: C:\Programs\Wildfly\modules,C:\Programs\Wildfly\modules\system\layers\base))): javax/xml/ws/spi/Provider
我已将 Jars 添加到包含此类的项目中,我已检查并且这些类存在于生成的 WAR 文件中。此外,Wildlfy 的模块文件夹中也不存在这些
我已经创建了 jboss-deployment-structure.xml:
<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="org.quartz" />
<module name="org.jboss.ws.core" />
</exclusions>
<resources>
<resource-root path="jbossws-client.jar" />
</resources>
<dependencies>
<module name="org.jboss.ws.core" />
</dependencies>
</deployment>
</jboss-deployment-structure>
在这里,我分别尝试了排除、资源和依赖项,但为了简单起见,只是在这里合并。但它们似乎都不适合我。
添加<module name="org.quartz" />
解决了我的石英调度问题,但似乎不适用于这个问题。
【问题讨论】:
您是否有理由既排除又包含org.jboss.ws.core
模块?我猜排除会获胜。
我已经分别尝试了排除、资源和依赖项,但为了简单起见,这里只是结合在一起。在帖子中提到.. @JamesR.Perkins
我只是希望使用战争中的罐子而不是wildfly自己的罐子
所以您正在打包jbossws-client.jar
,并且您想正确使用打包好的吗?
【参考方案1】:
发生的事情是wildlfy中已经存在一个名为com.project的模块。
这就是错误的意思-
Failed to link org/jboss/ws/core/jaxws/spi/ProviderImpl (Module "com.project" from local module loader
这意味着“com.project”(在 wildlfy 和 WAR 中)有这个类,这会导致两个 jars 被加载并且两个相同的类导致 NoClassDefFoundError
通过添加,我能够使其工作。 现在可以从 wildlfy 中删除到用户添加的模块,但在我的情况下,其他战争需要这个模块。因此,需要在产生此错误的所需战争中排除它。
【讨论】:
以上是关于Wildfly Jboss NoClassDefFoundError:无法为 org/jboss/ws/core/jaxws/spi/ProviderImpl 链接错误的主要内容,如果未能解决你的问题,请参考以下文章
在 JBoss/WildFly 中注入 EntityManager
JBoss EAP,Wildfly,JBoss web和JBoss服务器有什么区别?