有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中将maven项目作为依赖项添加到非主流时,web服务未发现ClassDefFound错误

我正在尝试开发一个Axis2Web服务。我创建了一个动态web项目,从WSDL生成我的web服务类。有一次我在Skelton中实现了我的逻辑,它有查询数据库的代码

所有这些数据库访问逻辑都在另一个Maven构建的项目中。我将这个Maven构建项目作为依赖项添加到我的webservice项目BuildPath中,该项目不是Maven构建的

当我运行这个webservice并从Soap UI点击服务时,我得到的No ClassDef Found Error如下所示

[ERROR] com/sample/test/common/dao/PersonDAO
java.lang.NoClassDefFoundError: com/sample/test/common/dao/PersonDAO
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    at java.lang.Class.getConstructor0(Class.java:2699)
    at java.lang.Class.newInstance0(Class.java:326)
    at java.lang.Class.newInstance(Class.java:308)
    at org.apache.axis2.util.Utils$8.run(Utils.java:768)
    at org.apache.axis2.java.security.AccessController.doPrivileged(AccessController.java:132)
    at org.apache.axis2.util.Utils.createServiceObject(Utils.java:765)
    at org.apache.axis2.receivers.AbstractMessageReceiver.makeNewServiceObject(AbstractMessageReceiver.java:245)
    at org.apache.axis2.receivers.AbstractMessageReceiver.getTheImplementationObject(AbstractMessageReceiver.java:282)
    at rg.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

我的Web服务代码

     public class EnrollmentServiceSkeleton implements EnrollmentServiceSkeletonInterface{

            @Autowired
            PersonDAO personDao;   // Getters and Setters.

        public EnrollmentServiceRespMessage enrollmentServiceProfile (EnrollmentServiceReqMessage enrollmentService) {

// My WebService Logic
}

在非maven项目的构建路径中,将一个maven项目作为对另一个非maven项目的依赖关系保留是否正确


共 (1) 个答案

  1. # 1 楼答案

    Maven的工作原理是构建一个项目,但不将其依赖项构建到包中。因此,使用该库的项目可以选择覆盖或排除maven依赖项

    当包含在非maven项目中时,您需要构建包含依赖项的项目

    请参阅How can I create an executable JAR with dependencies using Maven?,了解如何做到这一点的详细信息