У меня есть несколько проектов, которые взаимодействуют с «основным» проектом через EJB.
Большинство этих проектов используют один и тот же core.ejb.client.jar.
Однако в одном проекте используется собственный core.external.ejb.client.jar, который создается путем копирования файлов, предназначенных для единственного компонента EJB, необходимого для этого проекта.
У меня есть EJB/интерфейс с одним методом: public Application findApp()
Внутри метода он создает экземпляр службы, а внутри службы импортирует класс «Код».
core.external.ejb.client.jar содержит связанные файлы EJB/интерфейса, которые создает weblogic, и класс Application. Другой core.ejb.client.jar содержит множество других классов, включая Code.class.
Когда мой проект вызывает findApp(), я получаю следующую ошибку, однако в myportal нет ссылки на класс Code.
ERROR org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception occurred during processing request: Method "execute" failed for object myportal.web.actions.HomeAction@31c178d3 ognl.MethodFailedException: Method "execute" failed for object myportal.web.actions.HomeAction@31c178d3 at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1556) ~[ognl-3.1.15.jar:?] at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) ~[ognl-3.1.15.jar:?] at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:98) ~[struts2-core-2.5.17.jar:2.5.17] at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:90) ~[struts2-core-2.5.17.jar:2.5.17] at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1620) ~[ognl-3.1.15.jar:?] at ognl.ASTMethod.getValueBody(ASTMethod.java:91) ~[ognl-3.1.15.jar:?] at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) ~[ognl-3.1.15.jar:?] at ognl.SimpleNode.getValue(SimpleNode.java:258) ~[ognl-3.1.15.jar:?] at ognl.Ognl.getValue(Ognl.java:470) ~[ognl-3.1.15.jar:?] at ognl.Ognl.getValue(Ognl.java:434) ~[ognl-3.1.15.jar:?] at com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:401) ~[struts2-core-2.5.17.jar:2.5.17] ... Caused by: java.lang.NoClassDefFoundError: core/common/business/Code; at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_152] at java.lang.Class.privateGetDeclaredFields(Class.java:2583) ~[?:1.8.0_152] at java.lang.Class.getDeclaredField(Class.java:2068) ~[?:1.8.0_152] at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1803) ~[?:1.8.0_152] at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:79) ~[?:1.8.0_152] at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:494) ~[?:1.8.0_152] at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:482) ~[?:1.8.0_152] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_152] at java.io.ObjectStreamClass.(ObjectStreamClass.java:482) ~[?:1.8.0_152] at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:379) ~[?:1.8.0_152] at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:669) ~[?:1.8.0_152] at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1880) ~[?:1.8.0_152] at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1746) ~[?:1.8.0_152] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2037) ~[?:1.8.0_152] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) ~[?:1.8.0_152] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) ~[?:1.8.0_152] at java.util.ArrayList.readObject(ArrayList.java:797) ~[?:1.8.0_152] at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158) ~[?:1.8.0_152] at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2173) ~[?:1.8.0_152] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2064) ~[?:1.8.0_152] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) ~[?:1.8.0_152] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) ~[?:1.8.0_152] at weblogic.rmi.extensions.server.CBVInputStream.readObject(CBVInputStream.java:64) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:127) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:555) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:313) ~[com.bea.core.weblogic.rmi.client.jar:12.2.1.3] at core.common.ejb.external.core_ExternalPortalEJB_vl7zv5_ExternalPortalInterfaceImpl_12213_WLStub.getApplicationList(Unknown Source) ~[core.external.ejbclient.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:86) ~[com.oracle.weblogic.ejb.jar:12.2.1.3] at com.sun.proxy.$Proxy752.getApplicationList(Unknown Source) ~[?:?] at myportal.web.actions.HomeAction.execute(HomeAction.java:58) ~[_wl_cls_gen.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:899) ~[ognl-3.1.15.jar:?] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1544) ~[ognl-3.1.15.jar:?]




Ну я тупо искал только оператор импорта класса Code. Однако класс приложения и класс кода находятся в одной папке и поэтому не требуют оператора импорта. Класс приложения относится к классу кода, и поэтому я получаю сообщение об ошибке.