簡體   English   中英

在WAS上部署應用程序時出現NoClassDefFoundError

[英]NoClassDefFoundError while deploying an application on WAS

我正在嘗試在WAS 6.1 Server上部署應用程序。

但是,我收到以下錯誤:

java.lang.NoClassDefFoundError: org.apache.log4j.Logger
at myPackage.myClass.<clinit>(myClass.java:40)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:194)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1328)
at com.ibm.ejs.container.EJSContainer.loadBeanMetaData(EJSContainer.java:1756)
at com.ibm.ejs.container.HomeOfHomes.loadBeanMetaData(HomeOfHomes.java:1073)
at com.ibm.ejs.container.HomeRecord.getHomeAndInitialize(HomeRecord.java:454)
at com.ibm.ejs.container.EJSContainer.getHomeWrapperCommon(EJSContainer.java:1322)
at com.ibm.ejs.container.EJSContainer.getHomeInstance(EJSContainer.java:1231)
at com.ibm.ejs.container.EJSContainer.startBean(EJSContainer.java:1217)
at com.ibm.ws.runtime.component.EJBContainerImpl.startBean(EJBContainerImpl.java:3385)
at com.ibm.ws.runtime.component.EJBContainerImpl.startModule(EJBContainerImpl.java:2589)
at com.ibm.ws.runtime.component.EJBContainerImpl.start(EJBContainerImpl.java:3719)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1304)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1165)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:587)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:832)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:950)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2131)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:579)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:414)
at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
... 22 more

Admin Console -> Servers -> Application Servers -> myServerName -> Java and Process Management -> Process Definition -> Java Virtual Machine -> ClassPath

我有一個條目如下:

${MY_JARS}\log4j-1.2.15.jar

在“自定義屬性”中,MY_JARS密鑰包含值作為log4j jar的路徑

我做了服務器清理,然后重新啟動,重新發布,重新部署應用程序了無數次。 但是這個錯誤不會解決。

我究竟做錯了什么 ?

要以這種方式使用${MY_JARS} ,需要在Environment > WebSphere Variables而不是Custom PropertiesCustom Properties

但是,我警告您以這種方式添加log4j。 我似乎記得,如果在多個應用程序之間共享一個jar,則log4j可能無法正常工作。 我認為我們嘗試將log4j用作共享庫(可能是推薦的做您想做的事情,順便說一句),但最終需要部署到每個應用程序的WEB-INF / lib。

正如dbreaux已經指出的那樣,您必須創建具有正確范圍的環境變量。 自定義屬性在運行時可用,但不適用於服務器配置級別。

在WAS中,您可以檢查加載了哪些庫。 IIRC,您必須先單擊應用程序,然后再單擊Web模塊,然后才能檢查類加載器。 如果打開類加載器,您將看到加載了哪些庫。

請確保log4j.jar位於應用程序的CLASSPATH上。 在WEB-INF \\ lib下

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM