Axis2 在AAR文件中找不到骨架接口类
早上好。从WSDL生成AAR文件并进行部署后,当客户端调用传入时,我在骨架接口上得到一个NoClassDefFoundError 奇怪的是,我的消息接收器位于AAR文件的同一位置,因为我在services.xml中定义了它,所以堆栈跟踪中引用了它。不清楚为什么它能够加载一个类,但不能加载完全相同路径中的另一个类 My service类实现CoreSkeletOnInterface,并在services.xml中定义,但它存在于webapp的WEB-INF/classes文件夹中的AAR文件之外。我想这不会引起任何问题 这是堆栈跟踪。任何帮助都将不胜感激Axis2 在AAR文件中找不到骨架接口类,axis2,axis,Axis2,Axis,早上好。从WSDL生成AAR文件并进行部署后,当客户端调用传入时,我在骨架接口上得到一个NoClassDefFoundError 奇怪的是,我的消息接收器位于AAR文件的同一位置,因为我在services.xml中定义了它,所以堆栈跟踪中引用了它。不清楚为什么它能够加载一个类,但不能加载完全相同路径中的另一个类 My service类实现CoreSkeletOnInterface,并在services.xml中定义,但它存在于webapp的WEB-INF/classes文件夹中的AAR文件之外。
java.lang.NoClassDefFoundError: org/caqh/www/soap/wsdl/CoreSkeletonInterface
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.apache.axis2.util.Loader.loadClass(Loader.java:261)
at org.apache.axis2.util.Loader.loadClass(Loader.java:229)
at org.apache.axis2.receivers.AbstractMessageReceiver.makeNewServiceObject(AbstractMessageReceiver.java:250)
at org.apache.axis2.receivers.AbstractMessageReceiver.getTheImplementationObject(AbstractMessageReceiver.java:297)
at org.caqh.www.soap.wsdl.CoreMessageReceiverInOut.invokeBusinessLogic(CoreMessageReceiverInOut.java:23)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
尽管对上述内容有一些想法会很好,但我确实实现了一个变通方法 具体来说,我完全从AAR文件中取出生成的类文件(保留META-INF和services.xml),并将它们放在WEB-INF/lib中它们自己的JAR文件中
因此,只有服务定义在AAR文件中,所有相关类都存在于WEB-INF/classes和WEB-INF/lib中。您说您生成的类文件在AAR中,但您的服务类存储在AAR之外?在这种情况下,由于类装入器的工作方式,服务类将无法访问生成的类文件 这里基本上有三个类装入器: