1

WAS6.1サーバーにアプリケーションをデプロイしようとしています。

ただし、次のエラーが発生します。

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キーには、log4jjarへのパスとして値が含まれています

サーバーのクリーンアップと再起動、再公開、アプリケーションの再デプロイを何度も行いました。しかし、このエラーは発生しません。

私は何を間違っているのですか?

4

3 に答える 3

2

このように使用するには、ではなく>で${MY_JARS}定義する必要があります。EnvironmentWebSphere VariablesCustom Properties

ただし、その方法でlog4jを追加することについては注意が必要です。1つのjarが複数のアプリで共有されている場合、log4jが正しく機能しない可能性があることを思い出しているようです。log4jを共​​有ライブラリとして使用しようとしましたが(おそらく、実行しようとしていることを実行するためのより推奨される方法ですが)、代わりに各アプリケーションのWEB-INF/libにデプロイする必要がありました。

于 2012-08-14T14:25:26.807 に答える
1

dbreauxがすでに指摘しているように、正しいスコープで環境変数を作成する必要があります。カスタムプロパティは実行時に使用できますが、サーバー構成レベルでは使用できません。

WAS内で、ロードされているライブラリを確認できます。IIRCでは、アプリケーションをクリックする必要があります。その後、Webモジュールをクリックすると、クラスローダーを確認できるようになります。クラスローダーを開くと、ロードされているライブラリが表示されます。

于 2012-08-14T20:04:57.053 に答える
0

log4j.jarがアプリケーションのCLASSPATHにあることを確認してください。たとえば、WEB-INF\libの下

于 2012-08-14T04:42:43.757 に答える