0

私の JSF プロジェクト ワークスペースには、Java プロジェクトAと、Java プロジェクトを使用する Weblogic EJB プロジェクトBがあります。

EAR を生成すると、プロジェクト A と B の jar が、ワークスペース内の他のプロジェクトの jar と同様に EAR にあることがわかります。

ただし、B の A からクラスにアクセスしようとすると、クラスが見つからないという例外が発生します。

EJB プロジェクトBには がmanagedbean/dao/ejb/delegateあり、この時点では EJB はまったく呼び出されていません。ManagedBean がインスタンス化され、別のアクション呼び出しから、問題のあるクラスが呼び出された場所からメソッド (loadWorklist) を呼び出しています。

不足している特定の設定はありますか?

これは、UNIX サーバーの weblogic 9.2 で EAR としてデプロイされることに注意してください。必要なすべての jar は、実行時に EAR 内からロードされますが、プロジェクト A のクラスのみが欠落しています。

エラーからのスタック トレース:

javax.faces.FacesException: Error calling action method of component with id worklistForm:_idJsp131
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
        at javax.faces.component.UICommand.broadcast(UICommand.java:109)
        at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
        Truncated. see log file for complete stacktrace
javax.faces.el.EvaluationException: Exception while invoking expression #{worklistManagedBean.loadWorklist}
        at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:156)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
        at javax.faces.component.UICommand.broadcast(UICommand.java:109)
        at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
        Truncated. see log file for complete stacktrace
java.lang.NoClassDefFoundError: com/tcs/nextgen/workflow/util/WorkflowUtil
        at com.ultimatix.nextgen.worklist.managedbean.WorklistManagedBean.loadWorklist(WorklistManagedBean.java:36)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        Truncated. see log file for complete stacktrace

耳の構造:

EAR
|
|-META-INF
|-library1.jar
|-library2.jar
|-A.jar
|-B.jar

これは既存のレガシー アプリであるため、jar は APP-INF/lib にありません。

4

1 に答える 1

1

Bmodule が module のクラスを使用する場合、 module はAmoduleAのクラスパスで宣言する必要がMANIFEST.MFありますB。このファイルのクラス パス エントリは相対パスなので、モジュールは同じレベルにあるため、指定するだけで済みますA.jar。他の共通ライブラリを入れることができAPP-INF/lib、クラスパスに自動的に追加されます。ただし、これは WebLogic 固有の動作です。

于 2013-04-26T21:42:38.110 に答える