[РЕШЕНО] Не работает Maven + java mail

Статус
Закрыто для дальнейших ответов.

_MRDen3000YT_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
_MRDen3000YT_
Добрый день! У меня не работает Maven, зависимость java mail. А именно, не находит классы
Вот ошибка:
PHP:
[19:09:10 INFO]: _MRDen3000YT_ issued server command: /pr
[19:09:10 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'pr' in plugin bProtection v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1399) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1234) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_211]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_211]
        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
Caused by: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException
        at Commands.CommandProtection.onCommand(CommandProtection.java:40) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        ... 15 more
Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_211]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:152) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:100) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
        at Commands.CommandProtection.onCommand(CommandProtection.java:40) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        ... 15 more
Далее класс MessageUtil:
PHP:
package Util;

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class MessageUtil {
    public static void sendMessage()  {
        Properties properties = new Properties();
        properties.put("mail.smtp.host", "smtp.yandex.ru");
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.socketFactory.port", "465");
        properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        Session session = Session.getDefaultInstance(properties,
                new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("почта", "пароль от почту");
                    }
                });

        Message message = new MimeMessage(session);
        try {
        message.setFrom(new InternetAddress("почта"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("почта"));
        message.setSubject("Тест?");
        message.setText("Тест");
        Transport.send(message);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }



}
Скрыл название почт, а так же пароль
Этот код полностью рабочий, проверялся на отдельном проекте.
В классе с командой мы вызываем метод:
PHP:
MessageUtil.sendMessage();
Далее pom.xml
PHP:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>bProtection</groupId>
  <artifactId>bProtection_plugin</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>bProtection</name>
  <description>bProtection</description>
  <dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
    </dependencies>
</project>
Спасибо заранее!
 
Проблема не в Мавене, просто не во всех релизах Java есть пакет javax. Можешь его в плагин вшить с использованием maven-shade-plugin, чтоб ничего не сломать, но фиг знает какой размер файла выйдет в итоге. Чтоб порезало немного, можно воспользоваться опцией minimizeJar из того же плагина. Всё описанное гуглится.
 
Проблема не в Мавене, просто не во всех релизах Java есть пакет javax. Можешь его в плагин вшить с использованием maven-shade-plugin, чтоб ничего не сломать, но фиг знает какой размер файла выйдет в итоге. Чтоб порезало немного, можно воспользоваться опцией minimizeJar из того же плагина. Всё описанное гуглится.
А какой релиз java имеет javax?
 
Проблема не в Мавене, просто не во всех релизах Java есть пакет javax. Можешь его в плагин вшить с использованием maven-shade-plugin, чтоб ничего не сломать, но фиг знает какой размер файла выйдет в итоге. Чтоб порезало немного, можно воспользоваться опцией minimizeJar из того же плагина. Всё описанное гуглится.
Конечно нету, это отдельная либа JavaMail
 
А какой релиз java имеет javax?
В Oracle Java 8 мб, но я без понятия. Будет проще, если ты всё же воспользуешься shade'ом, просто потому что выйдет универсальнее для серверов.
Конечно нету, это отдельная либа JavaMail
Ну, тем более. Вообще не пользовался какими-либо либами javax.
 
я вшил в плагин java mail с помощью shade plugin вот таким образом:
Код:
<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>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
       <version>3.1.0</version>
   <configuration>
  <artifactSet>
   <includes>javax.mail.*</includes>
</artifactSet>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Ошибка осталась, ошибок в pom.xml нету.
Делал всё по этой теме на spigot.mc
 
Попробуй
Код:
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
            <relocations>
                <relocation>
                    <pattern>javax.mail</pattern>
                    <shadedPattern>your.packet.mail</shadedPattern>
                </relocation>
            </relocations>
        </configuration>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <minimizeJar>true</minimizeJar>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
Замени your.packet.mail на какой-нибудь свой. Это нужно, чтобы плагины не конфликтовали между собой, если кто-то решит добавить то же апи без релокации.
Алсо, добавь <scope>compile</scope> к своей зависимости.
Код:
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
    <scope>compile</scope>
</dependency>
 
Попробуй
Код:
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
            <relocations>
                <relocation>
                    <pattern>javax.mail</pattern>
                    <shadedPattern>your.packet.mail</shadedPattern>
                </relocation>
            </relocations>
        </configuration>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <minimizeJar>true</minimizeJar>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
Замени your.packet.mail на какой-нибудь свой. Это нужно, чтобы плагины не конфликтовали между собой, если кто-то решит добавить то же апи без релокации.
Алсо, добавь <scope>compile</scope> к своей зависимости.
Код:
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
    <scope>compile</scope>
</dependency>
Смотри, вместо your.packet.mail, я создаю свой пакет и просто здесь ввожу путь до него?
Пока что сделал без релокации, получилось вот так:
PHP:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>bProtection</groupId>
  <artifactId>bProtection_plugin</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>bProtection</name>
  <description>bProtection</description>
  <build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <minimizeJar>true</minimizeJar>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
</build>
  <dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
Все равно есть это ошибка
 
XML:
<?xml version="1.0" encoding="UTF-8"?>
<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>bProtection</groupId>
    <artifactId>bProtection_plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>bProtection</name>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

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

    <dependencies>
        <dependency>
            <groupId>org.bukkit</groupId>
            <artifactId>bukkit</artifactId>
            <version>1.12.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
 
XML:
<?xml version="1.0" encoding="UTF-8"?>
<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>bProtection</groupId>
    <artifactId>bProtection_plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>bProtection</name>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

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

    <dependencies>
        <dependency>
            <groupId>org.bukkit</groupId>
            <artifactId>bukkit</artifactId>
            <version>1.12.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
Абсолютно тоже самое
 
Абсолютно тоже самое
А у меня оно работает. Проверь, собирается ли твой проект мавеном, а не антом. Ибо ты не смог бы собрать мавеном свой плагин из-за того, что у тебя в зависимостях отсутствует bukkit.
 
А у меня оно работает. Проверь, собирается ли твой проект мавеном, а не антом. Ибо ты не смог бы собрать мавеном свой плагин из-за того, что у тебя в зависимостях отсутствует bukkit.
Хм, реально, все пакеты, которые должны были лежать в src/main/java, когда открываю jar файл архивом, лежать просто в архиве. Почему так?
 
Потому что иди читать как работает maven.
А, я дурак, я просто экспортировал проект. Я забыл что с maven надо run as - maven build. Спасибо большое, @Dereku за помощь! Инчае я еще тупил бы неделю.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх