代码之家  ›  专栏  ›  技术社区  ›  SerchRac

ClassNotFoundException:org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer在WebLogic中部署war时

  •  0
  • SerchRac  · 技术社区  · 7 年前

    当我以war WebLogic抛出的方式部署Spring Boot项目包时:

    Caused By: java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer
            at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1025)
            at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:986)
            at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:83)
            at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:607)
            at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:539)
            at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:492)
            at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:469)
            at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:53)
            at weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1390)
            at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1360)
            at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1341)
            at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1907)
            at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3091)
            at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1849)
            at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:882)
            at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
            at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
            at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
            at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
            at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:78)
            at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52)
            at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:754)
            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
            at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:264)
            at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:52)
            at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
            at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:90)
            at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:627)
            at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:171)
            at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:121)
            at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:151)
            at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:347)
            at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:901)
            at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1456)
            at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:456)
            at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:181)
            at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:217)
            at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:14)
            at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:69)
            at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
            at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
            at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
            at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
            at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
            at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
            at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
            at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
    

    WebLogic服务器版本: 12.2.1.1.0

    OneAppAPI.java文件

    @SpringBootApplication
    public class OneAppAPI extends SpringBootServletInitializer implements WebApplicationInitializer{
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(OneAppAPI.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(OneAppAPI.class, args);
        }
    

    weblogic.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <wls:weblogic-web-app
        xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app         http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    
        <wls:context-root>oneapp</wls:context-root>
        <wls:container-descriptor>
            <wls:prefer-application-packages>
                <wls:package-name>org.slf4j.*</wls:package-name>
            </wls:prefer-application-packages>
        </wls:container-descriptor>
    
    </wls:weblogic-web-app>
    

    dispatcherServlet-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    </beans>
    

    我对springbootstartertomcat的依赖范围是 假如 xml文件放在src/main/webapp/WEB-INF中/

    怎么了?

    1 回复  |  直到 7 年前
        1
  •  0
  •   SerchRac    7 年前

    我终于找到了解决办法。Deinum评论,问题是WebLogic包,但在我的情况下,我还要补充

       <wls:prefer-application-packages>
            <wls:package-name>org.slf4j.*</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
            <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
            <wls:package-name>com.google.common.*</wls:package-name>
        </wls:prefer-application-packages>*
    
    推荐文章