2013-03-22 42 views
3

當我將應用程序部署到集成WebSphere服務器時,我得到了包含在同一項目中的兩個類的NoClassDefFoundErrors。 注:我在這裏打電話給失蹤班com.my.package.MyClassRAD/WebSphere:NoClassDefFoundError

正在使用的項目包含會話Bean,並在「配置構建路徑」中導入導出項目。如果在企業資源管理器中使用消耗項目,導出項目將被列爲「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) 
... 

我在使用版本IBM Rational Application Developer中的WebSphere 8.0.4 和IBM WebSphere應用服務器的7.0.0.11版

我的工作區在「問題」視圖中沒有錯誤。

我已經嘗試過: - 清爽在Enterprise Explorer 所有項目 - - 項目>清潔 - 在Server視圖中使用-clean參數 開始RAD:停止,重新啓動,清理,發佈 - 閉和重新啓動RAD

首先我有第二個問題:在RAD中,我無法通過Ctrl + Shift + T找到com.my.package.MyClass。 我通過刪除文件(* .index文件和「savedIndexNames.txt」)在 /.metadata/.plugins/org.eclipse.jdt.core中。 但不幸的是,這並沒有解決運行時間/部署時間的問題。 :-(

有人可以給我提前提示?

謝謝!

回答

1

你需要做的就是添加Java項目作爲部署大會EAR項目是什麼。

這將比自動添加Java項目中的$ PROJECT.jar文件夾下的.ear

WebSphere自動從lib文件夾中壓縮.jar文件並將它們添加到類路徑中,這些.jar文件可以被所有EJB .jar和.war打包在.ear文件中。

因此,右鍵單擊您的EAR項目,轉到屬性,然後選擇「部署程序集」,而不是將Java Project添加到那裏,您應該看到lib文件夾下生成的jar文件。

enter image description here

+0

嗨馬科斯,謝謝你的回答!我沒有意識到可以將項目添加到部署程序集。不幸的是,我還沒有贏得聲譽尚未上調您的答案。我用暴力方法解決了這個問題:我刪除了兩個項目並從同事那裏複製了它們。在發佈我的問題之前,我們檢查了他的工作區,發現沒有區別,但同時複製這些項目也有幫助。現在即使不更改部署程序集,工作區也可以正常工作。但是你的解決方案聽起來比我的強力解決方案更好。 – Steffzilla 2013-04-03 11:28:21

+0

嗨Steff,非常有幫助。如果可能,請檢查我的答案是否正確。問候。 – 2013-04-03 13:38:45

+0

我將jar添加爲部署程序集,但仍無法找到它。對此非常沮喪。 – SoftwareSavant 2017-12-29 20:47:31