Java运行时jar丢失

Java运行时jar丢失,java,Java,我是java新手 我正在尝试从我的java类发送电子邮件,我在windows中尝试了该代码,最初它有一些问题。在我将mail-1.4.jar放入C:\ProgramFiles\Java\jdk1.8.0\u 91\jre\lib\ext之后,它运行良好 我只是将它移动到我的服务器(AWS),将这个java文件放在一个文件夹中,并尝试运行这个类。我将mail-1.4.jar放在路径/opt/jdk1.7.0_79/jre/lib/ext 我的java类: import java.io.IOExce

我是java新手

我正在尝试从我的java类发送电子邮件,我在windows中尝试了该代码,最初它有一些问题。在我将mail-1.4.jar放入
C:\ProgramFiles\Java\jdk1.8.0\u 91\jre\lib\ext
之后,它运行良好

我只是将它移动到我的服务器(AWS),将这个java文件放在一个文件夹中,并尝试运行这个类。我将mail-1.4.jar放在路径
/opt/jdk1.7.0_79/jre/lib/ext

我的java类:

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
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 Mail {

    public static void main(String[] args) throws IOException,
            URISyntaxException, AddressException, MessagingException {
        String BODY = "\n\n Regards Admin.";
        String SUBJECT = "SUBJECT";
        String TO = "fg@gddgh.com";

        final String FROM = "no-reply@dfh.com";
        final String SMTP_USERNAME = "SMTP_USERNAME";
        final String SMTP_PASSWORD = "SMTP_PASSWORD";
        final String HOST = "email-smtp.us-west-2.amazonaws.com";

        String message = "Email successfully sent";

        Properties props = System.getProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.port", 25);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.starttls.required", "true");

        Session session = Session.getDefaultInstance(props);

        MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(FROM));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
            msg.setSubject(SUBJECT);
            msg.setContent(BODY, "text/plain");

            Transport transport = session.getTransport();
            try {
                transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
                transport.sendMessage(msg, msg.getAllRecipients());
                System.out.println(message);
            } catch (Exception ex) {
                message = "Email not sent to the given ID";
                System.out.println(message);
            } finally {
                transport.close();
            }

    }
}
当以
javacmail.java
的形式执行命令时,它编译得很好,但无法运行此类。我在执行
javamail

    Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
            at java.lang.Class.getDeclaredMethods0(Native Method)
            at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
            at java.lang.Class.getMethod0(Class.java:2866)
            at java.lang.Class.getMethod(Class.java:1676)
            at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
            at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
    Caused by: java.lang.ClassNotFoundException: javax.mail.Address
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

您在本地环境中做得很好:您将JavaMail安装到JDK扩展目录(
jre/lib/ext
)中。因此,您必须将其保存到AWS环境中的同一目录中

并非
jre/lib
目录中的所有库都是系统加载的,但是
jre/lib/ext
中的库是系统加载的

见:

JRE由图中突出显示的框中的目录组成。无论您的JRE是单机版还是JDK软件的一部分,运行时环境都会自动将JRE目录的lib/ext中的任何JAR文件视为扩展


您在本地环境中做得很好:您将JavaMail安装到JDK扩展目录(
jre/lib/ext
)中。因此,您必须将其保存到AWS环境中的同一目录中

并非
jre/lib
目录中的所有库都是系统加载的,但是
jre/lib/ext
中的库是系统加载的

见:

JRE由图中突出显示的框中的目录组成。无论您的JRE是单机版还是JDK软件的一部分,运行时环境都会自动将JRE目录的lib/ext中的任何JAR文件视为扩展


似乎您没有将jar包含到openJdk中

尝试将jar添加到openJdk
pathToOpenJdk/jre/lib/ext
文件夹中。它应该有效


希望这有帮助。

您似乎没有将jar包含到openJdk中

尝试将jar添加到openJdk
pathToOpenJdk/jre/lib/ext
文件夹中。它应该有效


希望这有帮助。

您在AWS上使用的web容器在jre/lib/ext中包含之后,您在AWS上使用的web容器是什么。它不起作用。@Clara在包含库之后,你重新启动了JVM吗?你能帮助我重新启动JVM吗?我搜索了很多,但对重新启动JVM的可能性感到困惑。对不起,没有。这取决于环境。您必须搜索有关管理AWS服务器的文档。在包含在jre/lib/ext中之后,也没有运气。它不起作用。@Clara在包含库之后,你重新启动了JVM吗?你能帮助我重新启动JVM吗?我搜索了很多,但对重新启动JVM的可能性感到困惑。对不起,没有。这取决于环境。您必须搜索有关管理AWS服务器的文档。