【问题标题】:java.lang.NoClassDefFoundError when using EJB client jar使用 EJB 客户端 jar 时出现 java.lang.NoClassDefFoundError
【发布时间】:2019-08-10 00:55:16
【问题描述】:

我有几个通过 EJB 与“核心”项目交互的项目。 这些项目中的大多数都使用相同的core.ejb.client.jar。 然而,一个项目使用它自己的core.external.ejb.client.jar,这是通过复制用于该项目所需的唯一 EJB 的文件来制作的。 我有一个使用一种方法的 EJB/接口:public Application findApp()

它在方法中创建一个服务实例,并在服务中导入“代码”类。 core.external.ejb.client.jar 包含 weblogic 创建的相关 EJB/接口文件和 Application 类。另一个core.ejb.client.jar 包含许多其他类,包括Code.class

当我的项目调用findApp() 时,我收到以下错误,但是myportal 中没有对 Code 类的引用。

错误 org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - 处理请求期间发生异常:对象 myportal.web.actions.HomeAction@31c178d3 的方法“执行”失败 ognl.MethodFailedException:对象 myportal.web.actions.HomeAction@31c178d3 的方法“执行”失败 在 ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1556) ~[ognl-3.1.15.jar:?] 在 ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) ~[ognl-3.1.15.jar:?] 在 com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:98) ~[struts2-core-2.5.17.jar:2.5.17] 在 com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:90) ~[struts2-core-2.5.17.jar:2.5.17] 在 ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1620) ~[ognl-3.1.15.jar:?] 在 ognl.ASTMethod.getValueBody(ASTMethod.java:91) ~[ognl-3.1.15.jar:?] 在 ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) ~[ognl-3.1.15.jar:?] 在 ognl.SimpleNode.getValue(SimpleNode.java:258) ~[ognl-3.1.15.jar:?] 在 ognl.Ognl.getValue(Ognl.java:470) ~[ognl-3.1.15.jar:?] 在 ognl.Ognl.getValue(Ognl.java:434) ~[ognl-3.1.15.jar:?] 在 com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:401) ~[struts2-core-2.5.17.jar:2.5.17] ... 引起:java.lang.NoClassDefFoundError: core/common/business/Code; 在 java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_152] 在 java.lang.Class.privateGetDeclaredFields(Class.java:2583) ~[?:1.8.0_152] 在 java.lang.Class.getDeclaredField(Class.java:2068) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1803) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:79) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:494) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:482) ~[?:1.8.0_152] 在 java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass.(ObjectStreamClass.java:482) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:379) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:669) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1880) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1746) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2037) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) ~[?:1.8.0_152] 在 java.util.ArrayList.readObject(ArrayList.java:797) ~[?:1.8.0_152] 在 sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2173) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2064) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) ~[?:1.8.0_152] 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) ~[?:1.8.0_152] 在 weblogic.rmi.extensions.server.CBVInputStream.readObject(CBVInputStream.java:64) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] 在 weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:127) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] 在 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:555) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] 在 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:313) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] 在 core.common.ejb.external.core_ExternalPortalEJB_vl7zv5_ExternalPortalInterfaceImpl_12213_WLStub.getApplicationList(未知来源)~[core.external.ejbclient.jar:?] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] 在 weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:86) ~[com.oracle.weblogic.ejb.jar:12.2.1.3] 在 com.sun.proxy.$Proxy752.getApplicationList(Unknown Source) ~[?:?] 在 myportal.web.actions.HomeAction.execute(HomeAction.java:58) ~[_wl_cls_gen.jar:?] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] 在 ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:899) ~[ognl-3.1.15.jar:?] 在 ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1544) ~[ognl-3.1.15.jar:?]

【问题讨论】:

    标签: java ejb noclassdeffounderror


    【解决方案1】:

    好吧,我愚蠢地只搜索 Code 类的导入语句。但是 Application 类和 Code 类在同一个文件夹中,因此不需要 import 语句。 Application 类是指代码类,这就是我收到错误的原因。

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      相关资源
      最近更新 更多