首页 > 解决方案 > 由于消息传递异常,尝试使用 javamail 运行 .jar 文件时出错

问题描述

我正在为我的 SO 编写一个小的自动响应程序,并在其中加入了一个电子邮件功能作为我自己的噱头/测试。我的源代码在 netbeans 中运行良好,但是当我尝试在 Mac 终端中运行 .jar 本身时出现错误:无法初始化主类 [类名] 原因:java.lang.NoClassDefFoundError: javax/mail/ MessagingException 我对 java 还很陌生,所以对于问题中的任何含糊或简单性,我深表歉意,但如果有任何需要澄清的事情,请尽我所能

我已经尝试通过双击并在终端中运行它来定期运行 .jar 并且两者都不起作用,但是当我在 netbeans 中构建和运行源代码时,程序运行良好。我怀疑这可能与捕获异常行有关,但我真的不知道为什么。

try{
                    //sets variables to store custom subject and body data
                    System.out.print("Subject: ");
                    //input is name of scanner
                    String subject=input.next();
                    System.out.print("Body: ");
                    String body=input.next();                               

        Message message = new MimeMessage(session);
                    //sets sender as my email
        message.setFrom(new InternetAddress(myemail@gmail.com"));
                    //sets recipient as other email
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("recipientemail@msn.com"));
                    //sets subject and content as variables defined earlier
        message.setSubject(subject);
        message.setText(body);
                    //sends message
        Transport.send(message);

        System.out.println("Done");
            //catches and throws a necessary messaging exception
    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

标签: javajakarta-mail

解决方案


我认为从命令行运行 jar 文件的问题在于您的类路径中没有 java.mail,但是当您从 IDE 运行时,它会作为外部库添加到项目中。  https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html 来自@user999


推荐阅读