首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RAD / WebSphere: NoClassDefFoundError

RAD / WebSphere: NoClassDefFoundError
EN

Stack Overflow用户
提问于 2013-03-22 14:32:58
回答 1查看 5.8K关注 0票数 3

当我将我的应用程序部署到集成的WebSphere服务器时,我获得了包含在同一个项目中的两个类的NoClassDefFoundErrors。注意:我在这里调用丢失的类com.my.package.MyClass。

消费项目包含会话Beans,并在“配置构建路径”中导入导出项目。如果企业资源管理器中的消费项目,导出项目被列为"EAR库“。导出项目是一个包含com.my.package.MyClass的普通java项目。它导出其源文件夹。

例外情况如下:

代码语言:javascript
复制
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)
...

或者像那样

代码语言:javascript
复制
[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版中为WebSphere使用,在7.0.0.11版本中使用

我的工作区在Problems视图中没有错误。

我已经尝试过的内容:-使用-clean参数启动RAD -在服务器视图中刷新企业资源管理器中的所有项目-项目>清洁:停止、重新启动、清理、发布-关闭和重新启动RAD

首先,我遇到了第二个问题:在RAD中,我无法通过Ctrl + Shift +T找到com.my.package.MyClass。我通过删除/.元数据/..plugins/org.eclipse.jdt.core中的文件(*.index文件和"savedIndexNames.txt")来解决这个问题。但不幸的是,这并没有在运行时/部署时解决问题。:-(

谁能给我个提示吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-23 18:25:00

您需要做的是将Java添加为EAR项目的部署程序集。

这将自动添加/lib/ .ear文件夹下的Java中的.ear

WebSphere自动从lib文件夹中获取.jar文件,并将它们添加到类路径中,这些.jar可以由打包在.ear文件中的所有EJB.jar和.war找到。

因此,右键单击您的EAR项目,转到属性,而不是selec "Deployment“而不是在那里添加您的Java项目,您应该会看到lib文件夹下生成的jar。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15572941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档