Java运行时jar丢失
我是java新手 我正在尝试从我的java类发送电子邮件,我在windows中尝试了该代码,最初它有一些问题。在我将mail-1.4.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
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服务器的文档。