1

我正在尝试在 Weblogic 12c 上部署示例应用程序。我可以在 Tomcat 中很好地运行它,但是当我尝试将它部署到 Weblogic 时,我收到以下错误:

严重:上下文初始化失败 java.lang.NoClassDefFoundError: org/apache/log4j/Logger

我检查了 pom.xml,我知道 log4j 包含在依赖项中。这是堆栈跟踪:

严重:上下文初始化失败 java.lang.NoClassDefFoundError: org.opensaml.xml.XMLConfigurator.(XMLConfigurator.java:60) 处 org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) 处的 org/apache/log4j/Logger org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) at org .springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) 在 org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:676) 在 org.springframework.context.support.AbstractApplicationContext。refresh(AbstractApplicationContext.java:451) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) at org.springframework .web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 在 weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:678) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java :321) 在 weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) 在 weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.爪哇:243) 在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:200) 在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:185) 在 weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java :1838) 在 weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876) 在 weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) 在 weblogic.servlet.internal.WebAppModule.start(WebAppModule. java:823) 在 weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360) 在 weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356) 在 weblogic.application.utils.StateMachineDriver .nextState(StateMachineDriver.java:42) 在 weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138) 在 weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) 在 weblogic.application.internal .flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) ) 在 weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73) 在 weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24) 在 weblogic.application.internal.BaseDeployment$2.next (BaseDeployment.java:729) 在 weblogic.application.utils。StateMachineDriver.nextState(StateMachineDriver.java:42) 在 weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) 在 weblogic.application.internal.EarDeployment.activate(EarDeployment.java:61) 在 weblogic.application.internal .DeploymentStateChecker.activate(DeploymentStateChecker.java:165) 在 weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80) 在 weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:226) 在weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:418) 在 weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51) 在 weblogic.management.deploy.internal.DeploymentAdapter.activate (部署适配器.java:200) 在 weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30) 在 weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) 在 weblogic.management.deploy.internal。 ConfiguredDeployments.activate(ConfiguredDeployments.java:169) 在 weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123) 在 weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:210) 在 weblogic .management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:118) 在 weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:78) 在 sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl .在 org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1017) 在 org.jvnet 的 java.lang.reflect.Method.invoke(Method.java:606) 调用(DelegatingMethodAccessorImpl.java:43) .hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:388) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:430) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java :456) org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) org.jvnet.hk2。 internal.Utilities.createService(Utilities.java:2488) 在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) 在 org.jvnet.hk2.internal.ServiceLocatorImpl。getService(ServiceLocatorImpl.java:606) at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77) at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:231) at org.jvnet .hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:254) 在 org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:413) 在 org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java :456) org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) org.jvnet.hk2。 internal.Utilities.createService(Utilities.java:2488) 在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) 在 org.jvnet.hk2.internal。ServiceHandleImpl.getService(ServiceHandleImpl.java:87) at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1162) at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run( CurrentTaskFuture.java:1147) 在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548) 在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java :263) 原因:java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355 ) 在 java.lang 的 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 的 java.security.AccessController.doPrivileged(Native Method)。ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 76 更多

(XMLConfigurator.java:60) 在 org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) 在 org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) 在 org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java: 27) 在 org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) 被截断。请参阅日志文件以获取完整的堆栈跟踪 原因:java.net.URLClassLoader$1.run(URLClassLoader.java:366) 上的 java.net.URLClassLoader$1.run(URLClassLoader.run(URLClassLoader. java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 被截断。查看日志文件以获取完整的堆栈跟踪

(XMLConfigurator.java:60) 在 org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) 在 org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) 在 org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java: 27) 在 org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) 被截断。请参阅日志文件以获取完整的堆栈跟踪 原因:java.net.URLClassLoader$1.run(URLClassLoader.java:366) 上的 java.net.URLClassLoader$1.run(URLClassLoader.run(URLClassLoader. java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 被截断。请参阅 org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) 的 org.opensaml.PaosBootstrap 的 org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) 的完整堆栈跟踪 (XMLConfigurator.java:60) 的日志文件。 bootstrap(PaosBootstrap.java:27) 在 org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) 被截断。请参阅日志文件以获取完整的堆栈跟踪 原因:java.net.URLClassLoader$1.run(URLClassLoader.java:366) 上的 java.net.URLClassLoader$1.run(URLClassLoader.run(URLClassLoader. java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader。loadClass(ClassLoader.java:425) 被截断。查看完整堆栈跟踪的日志文件 2014 年 9 月 5 日上午 11:20:17 org.springframework.web.servlet.FrameworkServlet initServletBean 信息:FrameworkServlet 'saml':在 org.opensaml.DefaultBootstrap.initializeXMLTooling 开始初始化 (XMLConfigurator.java:60) (DefaultBootstrap.java:195) 在 org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) 在 org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) 在 org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory( SAMLBootstrap.java:42) 被截断。请参阅日志文件以获取完整的堆栈跟踪原因:java.net.URLClassLoader$1.run(URLClassLoader.java:366) 上的 java.net.URLClassLoader$1 上的 java.lang.ClassNotFoundException: org.apache.log4j.Logger。在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 的 java.security.AccessController.doPrivileged(Native Method) 运行(URLClassLoader.java:355)截断。查看日志文件以获取完整的堆栈跟踪

任何想法为什么这会在 Weblogic 上轰炸?提前致谢!

4

2 回答 2

1

可能的原因:

a) 它包含在依赖项中,但 Log4j jar 不存在于类路径中,或者已移动。请检查它是否存在于类路径中。

b) 这通常是由于在 webapp 库 (WEB-INF/lib) 中导入应用程序服务器中已经可用的 JAR 引起的。

如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分)并且找不到类的定义,则抛出此异常。

搜索到的类定义在编译当前执行的类时存在,但无法再找到该定义。

也可以看看:

在 Weblogic 中部署期间。

嵌套异常是 java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence

于 2014-09-05T17:19:33.793 回答
0

确保 log4j.jar 实际上在由 maven 构建的战争中(我猜它是一个 Web 应用程序)。

于 2014-09-05T17:25:36.163 回答