3

アプリケーションを統合WebSphereサーバーにデプロイすると、同じプロジェクトに含まれている2つのクラスに対してNoClassDefFoundErrorsが発生します。注:ここでは、欠落しているクラスをcom.my.package.MyClassと呼びます。

消費プロジェクトにはセッションBeanが含まれており、「ビルドパスの構成」にエクスポートプロジェクトをインポートします。Enterprise Explorerで消費プロジェクトの場合、エクスポートプロジェクトは「EARライブラリ」としてリストされます。エクスポートするプロジェクトは、com.my.package.MyClassを含む通常のJavaプロジェクトです。ソースフォルダをエクスポートします。

例外は次のようになります。

com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. [Root exception is com.ibm.ejs.container.ContainerEJBException: Unable to initialize deferred EJB.; nested exception is: java.lang.NoClassDefFoundError: com.my.package.MyClass]
    at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:1033)
    at com.ibm.ws.naming.urlbase.UrlContextHelper.processBoundObjectForLookup(UrlContextHelper.java:175)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.processBoundObjectForLookup(UrlContextImpl.java:1736)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1249)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1225)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1276)
    at javax.naming.InitialContext.lookup(Unknown Source)
...

またはそのような

[22.03.13 14:56:12:994 CET] 00000025 EJBContainerI E   WSVR0068E: Attempt to start EnterpriseBean MyEar#MyJar.jar#MyBean failed with exception: java.lang.NoClassDefFoundError: com.my.package.MyClass
    at java.lang.Class.getDeclaredMethodsImpl(Native Method)
    at java.lang.Class.getDeclaredMethods(Class.java:673)
    at com.ibm.ws.metadata.ejb.EJBMDOrchestrator.processTimeoutMetaData(EJBMDOrchestrator.java:6494)
    at com.ibm.ws.metadata.ejb.EJBMDOrchestrator.finishBMDInit(EJBMDOrchestrator.java:1488)
    at com.ibm.ws.runtime.component.EJBContainerImpl.finishDeferredBeanMetaData(EJBContainerImpl.java:5036)
    at com.ibm.ws.runtime.component.EJBContainerImpl.initializeDeferredEJB(EJBContainerImpl.java:4845)
    at com.ibm.ejs.container.HomeOfHomes$1.run(HomeOfHomes.java:406)
    at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
    at com.ibm.ejs.container.HomeOfHomes.getHome(HomeOfHomes.java:403)
    at com.ibm.ejs.container.HomeOfHomes.getHome(HomeOfHomes.java:339)
    at com.ibm.ejs.container.util.EJBLocalInterfaceObjectFactory.getObjectInstance(EJBLocalInterfaceObjectFactory.java:139)
    at javax.naming.spi.NamingManager.getObjectInstanceByFactoryInReference(Unknown Source)
    at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
    at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:927)
    at com.ibm.ws.naming.urlbase.UrlContextHelper.processBoundObjectForLookup(UrlContextHelper.java:175)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.processBoundObjectForLookup(UrlContextImpl.java:1736)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1249)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1225)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1276)
    at javax.naming.InitialContext.lookup(Unknown Source)
...

バージョン8.0.4のIBMRationalApplication Developer for WebSphereと、バージョン7.0.0.11のIBM WebSphereApplicationServerを使用しています。

問題ビューにワークスペースにエラーはありません。

すでに試したこと:--cleanパラメーターを使用してRADを起動する--Enterprise Explorerですべてのプロジェクトを更新する-プロジェクト>クリーン-サーバービューで:停止、再起動、クリーニング、公開-RADを閉じて再起動する

最初に2番目の問題がありました。RADでは、Ctrl + Shift + Tでcom.my.package.MyClassを見つけることができませんでした。ファイル(*.indexファイルと"savedIndexNames.txt")を削除して解決しました。 /.metadata/.plugins/org.eclipse.jdt.core。しかし残念ながら、それでは実行時/展開時に問題は解決しませんでした。:-(

誰かが私にヒントを与えることができますか?

前もって感謝します!

4

1 に答える 1

1

必要なのは、JavaプロジェクトをEARプロジェクトのデプロイメントアセンブリとして追加することです。

これにより、Javaプロジェクトの/lib/フォルダーの下にある.earの$PROJECT.jarが自動的に追加されます。

WebSphereはlibフォルダーから.jarファイルを自動的にピッキングしてクラスパスに追加します。これらの.jarは、.earファイル内にパッケージ化されたすべてのEJB.jarおよび.warで見つけることができます。

したがって、EARプロジェクトを右クリックし、プロパティに移動し、そこにJavaプロジェクトを追加するよりも、「Deployment Assembly」を選択するよりも、libフォルダーの下に生成されたjarが表示されるはずです。

ここに画像の説明を入力してください

于 2013-03-23T18:25:00.760 に答える