1

我正在尝试在 Wildfly 上部署我的项目并收到以下错误

14:50:07,843 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 104) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./Prj: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./Prj: java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/BindingBuilder
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:81)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    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(Unknown Source)
    at org.jboss.threads.JBossThread.run(JBossThread.java:485)
Caused by: java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/BindingBuilder
    at org.glassfish.jersey.server.ResourceConfig.<init>(ResourceConfig.java:356)
    at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.<init>(ResourceConfig.java:1050)
    at org.glassfish.jersey.server.ResourceConfig.forApplicationClass(ResourceConfig.java:348)
    at org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.addServletWithDefaultConfiguration(JerseyServletContainerInitializer.java:245)
    at org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.onStartupImpl(JerseyServletContainerInitializer.java:183)
    at org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.onStartup(JerseyServletContainerInitializer.java:144)
    at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:202)
    at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:184)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1526)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1526)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1526)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1526)
    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:249)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:96)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:78)
    ... 8 more
Caused by: java.lang.ClassNotFoundException: org.glassfish.hk2.utilities.binding.BindingBuilder from [Module "deployment.Prj.war" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:199)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 26 more

14:50:07,853 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "Prj.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./Prj" => "java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/BindingBuilder
    Caused by: java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/BindingBuilder
    Caused by: java.lang.ClassNotFoundException: org.glassfish.hk2.utilities.binding.BindingBuilder from [Module \"deployment.Prj.war\" from Service Module Loader]"}}
14:50:07,915 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "Prj.war" (runtime-name : "Prj.war")
14:50:07,916 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report
WFLYCTL0186:   Services which failed to start:      service jboss.undertow.deployment.default-server.default-host./Prj: java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/BindingBuilder

请注意:当我在文件“jboss-deployment-structure.xml”中排除 jaxrs 系统时,上述错误是 ** SOLVED **

这是文件“jboss-deployment-structure.xml”

<?xml version="1.0" encoding="UTF-8"?>
        <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
            <deployment>
                <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->
                <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->
                <exclude-subsystems>  
                    <subsystem name="jsf" />
                    <subsystem name="jaxrs" /> <!-- newly added line -->
                    <subsystem name="webservices" />
                </exclude-subsystems>
                
                <!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
                <exclusions>
                    <module name="org.hibernate" />
                    <module name="org.javassist" />
                    <module name="org.glassfish.jersey" />
                </exclusions>
                
                <!-- This allows you to define additional dependencies, it is the same as using the Dependencies: manifest attribute -->
                <dependencies>
                    <module name="org.javassist" />
                </dependencies>
                
            </deployment>
         </jboss-deployment-structure>

这是包含 Jersey 的 web.xml 文件的一部分

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.code.services.webservices</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

现在添加排除 jaxrs 系统后,又出现如下错误:

Caused by: java.lang.NoClassDefFoundError: Failed to link org/glassfish/jersey/server/ContainerException (Module "deployment.Prj.war" from Service Module Loader): javax/ws/rs/ProcessingException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:456)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:275)
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:78)
    at org.jboss.modules.Module.loadModuleClass(Module.java:717)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Unknown Source)
    at java.lang.Class.getDeclaredFields(Unknown Source)
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
    ... 13 more

19:17:55,933 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "Prj.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"Prj.war\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"Prj.war\"
    Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class org.glassfish.jersey.servlet.ServletContainer with ClassLoader ModuleClassLoader for Module \"deployment.Prj.war\" from Service Module Loader
    Caused by: java.lang.NoClassDefFoundError: Failed to link org/glassfish/jersey/server/ContainerException (Module \"deployment.Prj.war\" from Service Module Loader): javax/ws/rs/ProcessingException"}}

这似乎是这个 servlet 中的一个问题,那么该怎么办呢?

4

0 回答 0