JavaMail Maven Ошибка - PullRequest
       14

JavaMail Maven Ошибка

0 голосов
/ 27 мая 2018

Я использовал JavaMail с моим плагином для отправки электронного письма, и это работало хорошо пару месяцев назад.Теперь я вернулся, чтобы обновить свой плагин и сделать еще несколько тестов на ошибки, и по какой-то причине, когда я пытаюсь отправить электронное письмо от плагина, выдается следующее сообщение об ошибке:

Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger

Мой текущий pom.xml выглядит такЭто, я использую как JAR активации и JavaMail:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>spigot-repo</id>
        <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
</repositories>

<dependencies>
    <!--Spigot API-->
    <dependency>
        <groupId>org.spigotmc</groupId>
        <artifactId>spigot-api</artifactId>
        <version>1.12.2-R0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
    <!--Bukkit API-->
    <dependency>
        <groupId>org.bukkit</groupId>
        <artifactId>bukkit</artifactId>
        <version>1.12.2-R0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
    <!--Activation-->
    <dependency>
        <groupId>jaf</groupId>
        <artifactId>activation</artifactId>
        <version>1.0.2</version>
    </dependency>
    <!--Java Mail-->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>javax.mail-api</artifactId>
        <version>1.6.0</version>
    </dependency>
    <!--Google Authentication-->
    <dependency>
        <groupId>com.warrenstrange</groupId>
        <artifactId>googleauth</artifactId>
        <version>1.1.2</version>
    </dependency>
</dependencies>

1 Ответ

0 голосов
/ 28 мая 2018

Кажется, это ошибка в POM вашей зависимости.Если посмотреть на javax.mail.Session.java:198 из артефакта Maven javax.mail:javax.mail-api:1.6.0, он действительно имеет зависимость времени компиляции (и должен был быть объявлен в своем POM) до com.sun.mail.util.MailLogger.

javax.mail.Session.java:

57    import com.sun.mail.util.MailLogger;
...
190   public final Session {
191
192      private final Properties props;
193      private final Authenticator authenticator;
194      private final Hashtable<URLName, PasswordAuthentication> authTable
195         = new Hashtable<>();
196      private boolean debug = false;
197      private PrintStream out;           // debug output stream
198      private MailLogger logger;
...

Зависит ли эта ошибка от человеческого фактора или нет, я оставлю это на ваше усмотрение.

Поскольку вы не контролируете этоАртефакт, я предлагаю вам просто изменить свою зависимость на javax.mail:javax.mail-api:1.6.0 на следующую POM:

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.6.0</version>
</dependency>

Эта зависимость содержит точно такие же классы (побайтные), что иjavax.mail:javax.mail-api:1.6.0 делает, но с добавлением com.sun.mail.* материала, который нужен почтовому API:

РЕДАКТИРОВАТЬ

$ jar tvf com/sun/mail/javax.mail/1.6.0/javax.mail-1.6.0.jar
...[lines omitted]...
  7688 Mon Jul 17 12:53:30 CEST 2017 com/sun/mail/util/MailLogger.class

Этот jar имеет следующий хеш:

$ sha1sum com/sun/mail/javax.mail/1.6.0/javax.mail-1.6.0.jar
a055c648842c4954c1f7db7254f45d9ad565e278
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...