1

私は Maven で Spring アプリを開発していますが、一見重複する依存関係の問題に直面しています。mail.jar に加えて、activation.jar に javax.activation と、以下の例外をスローする jdk があります。

javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp
    at javax.mail.Session.getProvider(Session.java:229)
    at javax.mail.Session.getTransport(Session.java:338)
    at com.ace.amadeus.service.impl.EmailServiceImpl.send(EmailServiceImpl.java:75)
    at com.ace.amadeus.controller.MasterPricerController.index(MasterPricerController.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:421)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:136)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:326)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:313)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)

以下のように pom.xml に除外を追加することで、activation.jar の削除に成功しましたが、例外は発生しないようです。

<dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
                        <exclusions>
                                <exclusion>
                                        <groupId>javax.activation</groupId>
                                        <artifactId>activation</artifactId>
                                </exclusion>
                        </exclusions>
    </dependency>

今、jdk によって持ち込まれた依存関係を除外することが可能かどうか疑問に思っています。それは可能でしょうか??ここに画像の説明を入力

手伝ってくれてありがとう。
ジェームズ

4

2 に答える 2

1

maven-duplicate-finder プラグインを使用して、プロジェクト内でクラスの競合が発生している可能性がある場所を追跡できます。これは、除外を追加する必要がある場所を把握するのに役立ちます。また、重複するクラスが見つかった場合にビルドが失敗するためのエンフォーサ プラグインも確認してください。

mvn com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check

特定のエラーについては、クラスパスで javax.mail:mail とアクティブ化の両方が必要なようです。この特定のエラーを扱ういくつかの他の質問があり、それが役立つ可能性があります。

于 2012-10-02T01:58:04.533 に答える
0

環境変数に Maven ホームと Java_home が設定されていることを確認してください。あなたがmavenトラフIDEを実行している場合。使用する Maven を指定します。

日食で:

設定 - > maven - >インストール。Maven ホームとして設定した Maven パスを追加します。

于 2012-10-01T10:58:07.907 に答える