1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем _MRDen3000YT_, 18 сен 2020.

Статус темы:
Закрыта.
  1. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Добрый день! У меня не работает Maven, зависимость java mail. А именно, не находит классы
    Вот ошибка:
    PHP:
    [19:09:10 INFO]: _MRDen3000YT_ issued server command: /pr
    [19:09:10 ERROR]: null
    org
    .bukkit.command.CommandExceptionUnhandled 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 byjava.lang.NoClassDefFoundErrorjavax/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.ClassNotFoundExceptionjavax.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>
    Спасибо заранее!
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Проблема не в Мавене, просто не во всех релизах Java есть пакет javax. Можешь его в плагин вшить с использованием maven-shade-plugin, чтоб ничего не сломать, но фиг знает какой размер файла выйдет в итоге. Чтоб порезало немного, можно воспользоваться опцией minimizeJar из того же плагина. Всё описанное гуглится.
     
  3. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    А какой релиз java имеет javax?
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Конечно нету, это отдельная либа JavaMail
     
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    В Oracle Java 8 мб, но я без понятия. Будет проще, если ты всё же воспользуешься shade'ом, просто потому что выйдет универсальнее для серверов.
    Ну, тем более. Вообще не пользовался какими-либо либами javax.
     
  6. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    я вшил в плагин 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
     
  7. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Попробуй
    Код:
    <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>
     
  8. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Смотри, вместо 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>
    Все равно есть это ошибка
     
  9. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Код:
    <?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>
    
     
  10. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Абсолютно тоже самое
     
  11. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    А у меня оно работает. Проверь, собирается ли твой проект мавеном, а не антом. Ибо ты не смог бы собрать мавеном свой плагин из-за того, что у тебя в зависимостях отсутствует bukkit.
     
  12. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Хм, реально, все пакеты, которые должны были лежать в src/main/java, когда открываю jar файл архивом, лежать просто в архиве. Почему так?
     
  13. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Потому что иди читать как работает maven.
     
  14. Автор темы
    _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    А, я дурак, я просто экспортировал проект. Я забыл что с maven надо run as - maven build. Спасибо большое, @Dereku за помощь! Инчае я еще тупил бы неделю.
     
Статус темы:
Закрыта.

Поделиться этой страницей