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 home 和 Java_home。如果您正在运行 Maven 槽 IDE。指定要使用的 Maven。

在日食中:

首选项-> Maven-> 安装。添加您设置为 maven home 的 Maven 路径。

于 2012-10-01T10:58:07.907 回答