gpt4 book ai didi

eclipse - RAD/WebSphere : NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-02 03:48:10 25 4
gpt4 key购买 nike

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

消费项目包含 session 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)
...

我正在使用版本 8.0.4 中的 IBM Rational Application Developer for WebSphere和版本 7.0.0.11 中的 IBM WebSphere Application Server

我的工作区在问题 View 中没有错误。

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

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

有人可以给我提示吗?

提前致谢!

最佳答案

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

这将自动从您的 Java 项目中将 $PROJECT.jar 添加到 .ear 的/lib/文件夹下

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

因此,右键单击您的 EAR 项目,转到属性,然后选择“部署程序集”,然后将您的 Java 项目添加到那里,您应该会在 lib 文件夹下看到生成的 jar。

enter image description here

关于eclipse - RAD/WebSphere : NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com