gpt4 book ai didi

java - 将 maven 项目添加为 java 中非 maven 的依赖项时,没有 ClassDefFound 错误

转载 作者:行者123 更新时间:2023-12-01 15:00:26 27 4
gpt4 key购买 nike

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

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

当我运行此 Web 服务并从 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)

我的网络服务代码

     public class EnrollmentServiceSkeleton implements EnrollmentServiceSkeletonInterface{

@Autowired
PersonDAO personDao; // Getters and Setters.

public EnrollmentServiceRespMessage enrollmentServiceProfile (EnrollmentServiceReqMessage enrollmentService) {

// My WebService Logic
}

将 Maven 项目直接保留在非 Maven 项目的构建路径中作为对另一个非 Maven 的依赖是正确的方法吗?

最佳答案

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

当包含在非 Maven 项目中时,您需要构建它,包括依赖项。

参见How can I create an executable JAR with dependencies using Maven?详细说明如何做到这一点。

关于java - 将 maven 项目添加为 java 中非 maven 的依赖项时,没有 ClassDefFound 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732150/

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