【发布时间】:2019-01-21 15:22:40
【问题描述】:
我正在将使用 Java7/JBoss7 的旧系统迁移到 Java8/Wildfly14,它可以编译,但是当我尝试部署时,出现以下错误:
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit."rt-app-war-9.2-SNAPSHOT.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."rt-app-war-9.2-SNAPSHOT.war".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "rt-app-war-9.2-SNAPSHOT.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:151)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1736)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1698)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1556)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.getConstructor(Class.java:1825)
at org.jboss.as.jsf.deployment.JSFComponentProcessor.deploy(JSFComponentProcessor.java:106)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:144)
... 8 more
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.WebServiceException from [Module "deployment.rt-app-war-9.2-SNAPSHOT.war" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
包含的jar是javaee-api-7.0.jar,它在我的pom中:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
当我在 Eclipse 中按 ctrl+shift+T 并键入“javax.xml.ws.WebServiceException”时,它会在那个 jar 中找到它,所以我不明白为什么 Wildfly 说它找不到该类。
我错过了什么吗?
【问题讨论】:
-
您是从 Eclipse 部署还是在将 WAR 文件部署到
standalone/deployments时也会发生这种情况? -
@MišoStankay 我刚刚尝试过,直接将 WAR 部署到 jboss 时也会发生这种情况。怪事:javax.xml.ws.WebServiceException 也是JDK 1.8 的一部分,不可能找不到!
-
我建议你将代码的失败部分隔离到github repo并发送链接,这样我就可以自己运行了。
-
您的机器上是否安装了 Java 10 或 11,因为这闻起来就像您的 WildFly 正在使用其中之一运行...
-
@SteveC 我有 Java 11,也认为它可能是相关的,但即使在删除它之后,问题仍然存在。现在我只是在 web-inf/lib 中手动添加了 jar,这样我就可以继续工作了,但是在它进入验收环境之前,我需要弄清楚这一点 =/