2

RAD バージョン: 7.5.3、Java 1.5。

私はいくつかの異なるプロジェクトを持っています。Java コードを分割し、*.class ファイルを jar に変換する必要がありました。基本的に、同じ *.class ファイルのコードを削除してから、クラス ファイルを jar に入れました。

クラスを jar に分割し、その jar をプロジェクトに含めました。また、他のプロジェクトが瓶を見ることができるように、瓶の注文/エクスポートも行いました。

この時点で、Java コードの代わりに jar 内のクラス ファイルを使用しているため、理想的には私のプロジェクトは変更されていないはずです。

websphere で自分の Web アプリケーションにアクセスすると、現在 jar にあるクラスで class not found エラーが発生します。

プロジェクトの構造:

A. Project earApp  -- will need the webapp
B. Project webapp  -- will need the project (no jar files or *.java files are found in this project)
C. Project javasrc -- the java source and the NEW JAR file are found here.

websphere が jar を認識しているとは思いません。

エラーは次のとおりです。

java.lang.NoClassDefFoundError: com.MyApp
 at java.lang.ClassLoader.defineClassImpl(Native Method)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:258)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
 at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:675)
 at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:614)
 at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:431)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
 at java.lang.Class.getDeclaredMethodsImpl(Native Method)
 at java.lang.Class.getDeclaredMethods(Class.java:664)
 at com.ibm.ws.webcontainer.annotation.data.ScannedAnnotationData.collectMethodAnnotations(ScannedAnnotationData.java:130)
 at com.ibm.ws.webcontainer.annotation.data.ScannedAnnotationData.<init>(ScannedAnnotationData.java:47)
 at com.ibm.ws.webcontainer.annotation.AnnotationScanner.scanClass(AnnotationScanner.java:61)
 at com.ibm.ws.wswebcontainer.webapp.WebApp.processRuntimeAnnotationHelpers(WebApp.java:711)
 at com.ibm.ws.wswebcontainer.webapp.WebApp.populateJavaNameSpace(WebApp.java:624)
 at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:289)
 at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:93)
 at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:162)
 at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:671)
 at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:624)
 at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:395)
 at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:611)
 at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1274)
 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:921)
 at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2124)
 at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)

私は何をする必要があると思いますか?

4

3 に答える 3

3

WAS 7.0 にアップグレードしたときに同じ問題が発生しました。

どうやら WAS 7.0 では依存関係を検索する方法が変更されたようで、作成している JAR ファイルが、それらが使用されているマニフェスト ファイルにも記載されていることを確認する必要があります。

したがって、EJB プロジェクトと Web プロジェクトの両方で使用している場合は、JAR を参照するように両方のマニフェスト ファイルを更新する必要があります。

于 2010-05-13T14:49:48.727 に答える
1

プロジェクトのプロパティ ダイアログで、jar を Java EE モジュールの依存関係に追加しましたか? jar は、パッケージ エクスプローラーの EAR または Web ライブラリ ノードの下にリストされていますか?

于 2010-03-02T16:45:16.897 に答える
0

jarファイルをWebContent/WEB-INF / libにコピーするまで、同じ問題が発生しました。あなたはこれを試すことができます。

于 2010-06-24T13:59:17.243 に答える