2013-04-26 77 views
0

在我的JSF項目工作區中,我有一個使用Java項目的Java項目A和Weblogic EJB項目B類未找到Weblogic 9.2的例外

在生成EAR時,我可以看到項目A和B的jar在EAR中以及在工作空間中的其他項目中。

但是,在嘗試訪問B中的A類時,我得到的類未找到異常。

Ejb項目Bmanagedbean/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 

由於這是一個現有的遺留應用,罐子不在APP-INF/lib中。

+0

你能不能展示EAR的結構,以及你得到的stracktrace? – NilsH 2013-04-26 10:46:29

+0

是否在服務器啓動時調用EJB?或在服務器啓動後執行某些操作? – Ankit 2013-04-26 10:57:51

+1

我相信WebLogic希望公共庫在EAR的'APP-INF/lib'中。如果沒有,你可能必須將它們添加到依賴它們的jar的'MANIFEST-MF'文件中的類路徑中。如果'A'和'B'是JEE模塊,那麼後者可能就是解決方案。 – NilsH 2013-04-26 11:02:29

回答

1

如果模塊B使用類從模塊A,則模塊A必須在模塊BMANIFEST.MF類路徑聲明。此文件中的類路徑條目是相對的,因爲這些模塊處於同一級別,所以您可以指定A.jar。其他常用庫可以放在APP-INF/lib中,並會自動添加到類路徑中。但是,這是WebLogic特定的行爲。