0

Webサービスを開発しようとしていAxis2ます。からWebサービスクラスを生成する動的Webプロジェクトを作成しましたWSDLSkeltonデータベースにクエリを実行するコードを含むロジックを実装したら。

このデータベースアクセスロジックはすべて、別のMavenビルドプロジェクトにあります。このMavenビルドプロジェクトを、Webサービスプロジェクトの依存関係として、MavenビルドBuildPathではないWebサービスプロジェクトに追加しました。

この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)

私のWebサービスコード

     public class EnrollmentServiceSkeleton implements EnrollmentServiceSkeletonInterface{

            @Autowired
            PersonDAO personDao;   // Getters and Setters.

        public EnrollmentServiceRespMessage enrollmentServiceProfile (EnrollmentServiceReqMessage enrollmentService) {

// My WebService Logic
}

Mavenプロジェクトを別の非Mavenへの依存関係として非Mavenプロジェクトのビルドパスに直接保持するのは正しい方法ですか?

4

1 に答える 1

1

Mavenはプロジェクトをビルドすることで機能しますが、その依存関係をパッケージにビルドすることはありません。したがって、ライブラリを使用するプロジェクトには、Mavenの依存関係をオーバーライドまたは除外するオプションがあります。

Maven以外のプロジェクトに含まれる場合は、依存関係を含めてビルドする必要があります。

Mavenを使用して依存関係を持つ実行可能JARを作成するにはどうすればよいですか?を参照してください。それを行う方法の詳細があります。

于 2012-12-05T23:47:21.730 に答える