从jdk中排除依赖项/ jar

时间:2012-10-01 10:38:30

标签: spring email maven spring-mvc dependencies

我正在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带来的依赖关系。 那可能吗? enter image description here

感谢您的帮助 詹姆斯

2 个答案:

答案 0 :(得分:1)

您可以使用maven-duplicate-finder plugin来帮助跟踪项目中可能发生类冲突的位置。这有助于确定您需要添加排除的位置。如果找到重复的类,也请检查enforcer plugin是否导致构建失败。

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

对于您的特定错误,您似乎确实需要在类路径上同时使用javax.mail:mail和activation。有一些other个问题可以解决这个特定的错误,可能会有所帮助。

答案 1 :(得分:0)

请确保在环境变量中设置maven home和Java_home。如果您正在通过IDE运行maven。指定要使用的maven。

在日食中:

优先 - &GT; maven-&GT;安装。添加您设置为maven home的Maven路径。