Javax.mail.* Пакет не существует — почему?

#java #jakarta-mail

#java #джакарта-почта

Вопрос:

Я использую класс с именем emailer для отправки электронной почты из приложения Java,
я использую netbeans 6.9.1 и я использую J2SE, я загрузил javamail api и добавил jar в classpath , а также поместил его в src для netbeans.

Netbeans выдает сообщение об ошибке Package javax.mail does not exist , и я не знаю, почему? Поскольку я чувствую, что сделал все правильно, вот код

 import java.util.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.mail.*;
import javax.mail.internet.*;

/**
* Simple demonstration of using the javax.mail API.
*
* Run from the command line. Please edit the implementation
* to use correct email addresses and host name.
*/
public final class Emailer {

  public static void main( String... aArguments ){
    Emailer emailer = new Emailer();
        try {

            emailer.sendEmail("fromblah@blah.com", "toblah@blah.com", "Testing 1-2-3", "blah blah blah");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Emailer.class.getName()).log(Level.SEVERE, null, ex);
        }
   }


  public void sendEmail(String aFromEmailAddr, String aToEmailAddr,
    String aSubject, String aBody) throws ClassNotFoundException
  {
      Class.forName("javax.mail");

    Session session = Session.getDefaultInstance( fMailServerConfig, null );
    MimeMessage message = new MimeMessage( session );
    try {

      message.addRecipient(
        Message.RecipientType.TO, new InternetAddress(aToEmailAddr)
      );
      message.setSubject( aSubject );
      message.setText( aBody );
      Transport.send( message );
    }
    catch (MessagingException ex){
      System.err.println("Cannot send email. "   ex);
    }
  }


  public static void refreshConfig() {
    fMailServerConfig.clear();
    fetchConfig();
  }



  private static Properties fMailServerConfig = new Properties();

  static {
    fetchConfig();
  }


  private static void fetchConfig() {
    InputStream input = null;
    try {

      input = new FileInputStream( "C:\Temp\MyMailServer.txt" );
      fMailServerConfig.load( input );
    }
    catch ( IOException ex ){
      System.err.println("Cannot open and load mail server properties file.");
    }
    finally {
      try {
        if ( input != null ) input.close();
      }
      catch ( IOException ex ){
        System.err.println( "Cannot close mail server properties file." );
      }
    }
  }
}
  

Как это решить?

Комментарии:

1. Похоже, конфигурация проекта в netbeans по-прежнему настроена неправильно.

2. Вам нужно щелкнуть правой кнопкой мыши по названию проекта на вкладке проекта, чтобы перейти к свойствам-> Библиотеки -> Нажмите Добавить Jar/ папку… Просмотрите и выберите свой jar … и нажмите OK … и создайте и повторно запустите

3. или, в качестве альтернативы, вы можете перейти в свойства -> компиляция и выбрать опцию «компилировать при сохранении», которая автоматически очистит и перестроит, когда вы что-либо измените через несколько секунд.

4. Хотя это не дает прямого ответа на ваш вопрос, это намного проще, если вы используете систему сборки, такую как Gradle или Maven. Они автоматически загрузят зависимости в ваш classpath, и Netbeans их понимает.

Ответ №1:

Добавить javax.mail.jar и активация.jar для перехода к вашему проекту -> Путь сборки -> Настроить путь сборки -> Путь сборки Java -> библиотеки.

Ответ №2:

Вам нужно щелкнуть правой кнопкой мыши по названию проекта на вкладке проекта, чтобы перейти к

Свойства-> Библиотеки -> Нажмите Добавить Jar/ папку

… Просмотрите и выберите свой jar … и нажмите OK … и

Очистите, соберите и запустите повторно

Комментарии:

1. @ThreaT Если вы внимательно посмотрите на ВОПРОС , упомянутый в OP » Я загрузил javamail api и добавил jar «, чтобы было понятно, к какому jar относится этот ответ …. И на всякий случай, если вы не знаете, это относится к любому файлу jar, который вы добавляете в проект

2. Загрузите jar, который вам нужно добавить, отсюда: oracle.com/technetwork/java/index-138643.html