Intellij не распознает импорт javax.mail, но проект работает нормально - PullRequest
0 голосов
/ 23 апреля 2019

Я использую библиотеку javax.mail в своем проекте.Мой проект работает нормально, используя - mvn clean install, но когда я пытаюсь отладить, Intellij IDE показывает ошибку и не может распознать импорт javax.mail.Я перезапустил свою IDE из FILE -> Invalidate Caches и перезапустил, но все равно не повезло.

Они не распознаются intellij IDEA с указанием неиспользованного импорта.Я использую ниже версии зависимости как: - javax.activation - 1.1.1 и javax.mail - 1.4.

Поскольку проект строится нормально, я считаю, что проблема заключается в некоторых настройках IDE. Пожалуйста, дайте мне знать, если это можно решить.

enter image description here

1 Ответ

2 голосов
/ 23 апреля 2019

Попробуйте эту зависимость maven:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
    <scope>provided</scope> <!-- add this only if code will run in a java container (i.e. tomcat, etc)-->
</dependency>

И вы также должны увидеть почтовые классы в разделе Внешние библиотеки -> Maven: javax.mail: mail: 1.4 -> mail-1.4.jar -> javax.mail

Существуют также более новые версии почтовой зависимости java, которые вы можете использовать, например 1.4.7 или 1.5.0-b01

Последняя версия (указанная @Mark Rotteveel) - 1.6.3, а координаты maven изменены на Джакарта:

    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>jakarta.mail</artifactId>
        <version>1.6.3</version>
    </dependency>

На основе вашего кода я создал упрощенную версию проекта только с двумя файлами; pom.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>com.test</groupId>
    <artifactId>message-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
    </dependencies>
</project>

и SendMail.java

package com.test;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Properties;

public class SendMail {
    public static void main(String[] args) {
        sendMail(new Exception("Problem with cable"));
    }

    public static void sendMail(Exception exception) {
        String to = "destination@test.com";
        String from = "sender@test.com";
        String host = "smtp.test.com";
        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("Trade-processor instance shutdown!");
            message.setText(getExceptionMessage(exception));
            Transport.send(message);
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }

    private static String getExceptionMessage(Exception e) {
        StringWriter sw = new StringWriter();
        e.printStackTrace(new PrintWriter(sw));
        return sw.toString();
    }
}
  • Убедитесь, что ваша исходная папка 'java' помечена как исходная (щелкните правой кнопкой мыши по ней и выберите «Пометить каталог как -> источник корня», если он еще не светло-голубой)
  • Убедитесь, что имена пакетов классов (com.test) совпадают, т.е. 'src / main / java / com / test / SendMail' на панели проекта и 'package com.test' в SendMail.java

IDEA Project showing package and External Libraries

...