首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于java邮件api的NoSuchProviderException

用于java邮件api的NoSuchProviderException
EN

Stack Overflow用户
提问于 2013-12-22 20:47:07
回答 2查看 867关注 0票数 0

我在eclipse中创建了一个简单的maven项目,以便用一个个人gmail帐户发送一些电子邮件。在日食中,邮件被成功发送。然后,我将项目构建到一个带有依赖项的可执行jar中。但是,当我从命令行运行jar时,它会引发以下异常:

代码语言:javascript
复制
Exception in thread "main" java.lang.RuntimeException: javax.mail.NoSuchProviderException: smtp
    at EmailSender.send(EmailSender.java:75)
    at EmailSender.createNewAccount(EmailSender.java:33)
    at EmailSender.main(EmailSender.java:18)
Caused by: javax.mail.NoSuchProviderException: smtp
    at javax.mail.Session.getService(Session.java:792)
    at javax.mail.Session.getTransport(Session.java:728)
    at javax.mail.Session.getTransport(Session.java:668)
    at javax.mail.Session.getTransport(Session.java:648)
    at javax.mail.Session.getTransport(Session.java:705)
    at javax.mail.Transport.send0(Transport.java:248)
    at javax.mail.Transport.send(Transport.java:124)
    at EmailSender.send(EmailSender.java:73)
    ... 2 more

有人知道在Eclipse中执行程序和在外部执行jar有什么区别吗?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-23 20:30:44

我通过修改pom.xml来解决这个问题,这样它就可以导出所有的依赖项。诀窍是去掉这条线

代码语言:javascript
复制
<minimizeJar>true</minimizeJar>

在以下代码中

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>*******</groupId>
    <artifactId>**********</artifactId>
    <version>1</version>
    <dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>
        </dependency>
        <dependency>
            <groupId>javaee</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/shaded</outputDirectory>
                            <finalName>d2si-mailsender</finalName>
                            <minimizeJar>true</minimizeJar>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>EmailSender</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
票数 0
EN

Stack Overflow用户

发布于 2013-12-22 22:46:00

您应该在META文件夹中有一个包含所有提供程序文件的服务文件夹,并且应该将它们导出到jar。默认情况下,eclipse包括它们,但是导出的jar不是

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20733913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档