【问题标题】:Why do i get an error while creating a jar file out of my code?为什么我在使用我的代码创建 jar 文件时会出错?
【发布时间】:2012-04-30 19:06:30
【问题描述】:
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        final String username = "xxx.xxxx@xxx.com";
        final String password = "xxxo@xxxx";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "webmxzz.xxxxxxx.com");
        props.put("mail.smtp.port", "587");

        Session session = Session.getInstance(props,
          new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
          });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("xxxx.x@xxxx.com"));
            message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("xxxx.x@xxxx.com"));
            message.setSubject("Testing Subject");
            message.setText("Dear User,"
                + "\n\n No spam to my email, please!");

            Transport.send(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

在编写通过网络发送电子邮件的代码时,我发现了这个代码。我使用的 jar 是:javaee-api-5.jaractivation.jarmail.jar

我编译代码并在 eclipse 中运行它。它工作正常并将邮件发送到所需的邮件 ID,但是当我尝试通过导出 jar 文件来制作 jar 文件时出现问题,我收到警告: jar 已导出。完成时出现警告。

我得到的错误是:

Could not find the main class: (class). Program will exit.

可能的原因是什么?请帮助我找到解决方案。

【问题讨论】:

  • 每当我编译代码时,除了 MailSender.class 之外,我总是在 bin 中得到 MailSender$1.class
  • / 编译自 MailSender.java (version 1.6 : 50.0, super bit) class MailSender$1 extends javax.mail.Authenticator { // 方法描述符 #6 ()V // Stack: 1, Locals: 1 邮件发件人$1(); 0 aload_0 [this] 1 invokespecial javax.mail.Authenticator() [8] 4 return 行号:[pc: 0, line: 31] [pc: 4, line: 1] 局部变量表:[pc: 0, pc : 5] local: this index: 0 type: new MailSender(){} // 方法描述符#15 ()Ljavax/mail/PasswordAuthentication; // 堆栈:4,本地:1 受保护的 javax.mail.PasswordAuthentication
  • getPasswordAuthentication(); 0 new javax.mail.PasswordAuthentication [16] 3 dup 4 ldc [18] 6 ldc [20] 8 invokespecial javax.mail.PasswordAuthentication(java. lang.String, java.lang.String) [22] 11 areturn 行号:[pc: 0, line: 33] 局部变量表:[pc: 0, pc: 12] local: this index: 0 type: new MailSender (){} 内部类:[内部类信息:#1 MailSender$1,外部类信息:#0 内部名称:#0,访问标志:0 默认]
  • 封装方法:#28 #30 MailSender.main([Ljava/lang/String;)

标签: java jakarta-ee


【解决方案1】:

是的,应该创建一个清单文件。此文件包含带有“Main-Class”的单行文本文件,例如:Main-Class: Your Main class

或者你可以使用 eclipse 来做到这一点:Java: export to an .jar file in eclipse

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多