2017-08-09 3 views
0

Ich bin EAR-Paket auf Weblogic 12c bereitstellen, und erhalten Sie die ClassNotFoundException. Es scheint jedoch, dass das Projekt keinen Verweis auf die fehlende Klasse in Frage hat (Ich habe den Klassennamen mit null Ergebnissen durchsucht). Ich weiß, dass diese Ausnahme ausgelöst wird, wenn versucht wird, fehlende Klasse über Reflektion zu instanziieren. Ich vermute, dass eine Bibliothek von dieser Klasse abhängig sein kann.ClassNotFoundException, wie zu finden, wo fehlende Klasse verwendet wird

Wie finde ich heraus, welche Konfiguration oder welcher Benutzercode die Instanziierung der Klasse verursacht? Server-Protokoll nicht geben genug Details, aber hier ist es

<9.8.2017, 1:07:05,113 ip. EEST> <Error> <Console> <BEA-240003> <Administration Console encountered the following error: weblogic.application.ModuleException: java.lang.ClassNotFoundException: fi.foo.bar.service.FoobarWebServiceImpl 
    at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140) 
    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:750) 
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45) 
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:260) 
    at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:66) 
    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.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) 
Caused by: java.lang.ClassNotFoundException: fi.foo.bar.service.FoobarWebServiceImpl 
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1026) 
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:987) 
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:83) 
    at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:608) 
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:540) 
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:493) 
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:470) 
    at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:53) 
    at weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1414) 
    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:1823) 
    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) 
+0

Erfolgt dies in Ihrer Entwicklungsumgebung oder nur im Produktionsmodus? Können Sie Ihre Anwendung in einer IDE debuggen? Wenn ja, welche IDE verwenden Sie? –

+0

Nun, es passiert in der Entwicklungsumgebung, nachdem ich scheinbar unbenutzte Klasse aus der Bibliothek gelöscht habe. Ich muss wissen, wo diese Klasse gebraucht wird, auch wenn es keinen Bezug darauf gibt. Vielleicht wird der Klassenname irgendwo im Framework dynamisch erstellt, so dass ich ihn nicht durchsuchen kann, aber woher weiß ich, welche Klasse versucht, diese Klasse zu laden? Warum kann ich es aus dem Serverprotokoll nicht sehen? –

Antwort

1

Sie Exception-Haltepunkt in Ihrem IDE verwenden können ClassNotFoundException zu fangen. Wenn Sie einen solchen Haltepunkt hinzufügen, wird die Ausführung angehalten, sobald die Ausnahme auftritt. Dann können Sie durch den Stack gehen, den Sie in Ihrer IDE finden, und indem Sie Stack-Zeilen auswählen, sehen Sie die Daten in jedem Schritt, um herauszufinden, wo Ihr Code versucht, ein Objekt dieses Typs zu instanziieren.

1

Ihr Weblogic kann die Admin-Konsole nicht laden. Möglicherweise ist eine frühere Bereitstellung der App mit der betreffenden Klasse fehlgeschlagen. Versuchen Sie, die folgenden:

  1. Shutdown alle Cluster unter dieser Domäne

  2. löschen tmp und Cache Ordner auf allen Servern

  3. Löschen config.xml Datei unter anhängig directory

  4. löschen Sie die * .lok Datei auf allen Servern unter/config und/Domain Ordner

  5. Re-Start Admin

  6. Re-Start alle verwalteten Server

  7. nun den Krieg/Ohr einsetzen Datei und es sollte funktionieren ...

+0

Die Admin-Konsole wird ordnungsgemäß geladen (ich stelle sie über die Admin-Konsole bereit). Ich habe diesen Rat jedoch versucht und bekomme immer noch denselben Fehler. –

0

Ihre Anwendung fehlgeschlagen ‚fi.foo.bar.service.FoobarWebServiceImpl‘, zu laden, die in WebAppServl ist etContext eines WebAppModules. Überprüfen Sie den Klassennamen auf Tippfehler für "fi.foo.bar.service.FoobarWebServiceImpl" in web.xml oder weblogic.xml.

+1

Das wäre nett in Kommentaren, keine Antwort. – Nic3500

Verwandte Themen