Java程序在Windows 7上工作,但不是Windows 8?
你们让我很自觉......我会尽力让这个更好。Java程序在Windows 7上工作,但不是Windows 8?
好的,所以这个程序(不要杀我..我下载它)只能在Windows 7和Ubuntu上工作,据我所知。当你在Windows 8上打开它时,它会显示“Java异常错误”。
我在想这个和文件末尾的catch(messagingException ex)
有关。我承认,我对java一无所知,但你必须从某处开始......不是吗?我知道java适用于所有平台!
我也尝试过这个程序有多个文件和多个Gmail帐户......我甚至用我的康卡斯特电子邮件地址试了一下。
我使用“JavaMailAPI”(http://www.oracle.com/technetwork/java/javamail/index.html)作为实际的邮件部分。
当我打开它在Windows 8终端它给了我这样的:
Exception in thread "Main" java.lang.noclassdeffounderror: java/mail/mailexception
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.langf.Class.privateGetDdecLaredMethods(Unkown source)
at java.lang.Class.getMethod(unknown source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown source)
caused by: java.lang.classnotfoundexception: java.mail.messagingException
at java.net.URLCLassLoader$1.run(unknown source)
at java.net.URLClassLoader$1.run(Unknown source)
at java.security.AccessController.doPrivaleged(native Method)
at java.net.URLClassLoader.findClass(Unknown source)
at java.lang.ClassLoader.findClass(Unkown source)
at jaa.lang.CLassLoader.loadClass(Unknown source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown source)
at java.lang.ClassLoader.loadClass(Unknown source)
... 6 more
下面是代码:
package testing;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Testing{
public static void main(String[] args) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("Email","Password");
}
});
try {
BodyPart messageBodyPart = new MimeBodyPart();
Multipart multipart = new MimeMultipart();
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("Email Address"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("Email Address to send "));
message.setSubject("Subject");
message.setText("Message");
String filename = "attachment location";
DataSource source = new FileDataSource(filename);
message.setDataHandler(new DataHandler(source));
message.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
Transport.send(message);
System.out.println("Done");
} catch (MessagingException ex) {
Logger.getLogger(Testing.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
如果您需要任何其他有关程序请查询!
You have to download Java Mail
如果通过该应用程序所需的JavaMail你应该建立一个安装程序打包和安装所需的JAR文件作为JavaMail的。
谢谢,但无论如何要添加到程序本身?所以我不必告诉大家下载它? – Leetfail 2013-02-17 15:51:07
所以你所要做的只是让你的电脑上的javamail运行“Mail.jar”? – Leetfail 2013-02-17 15:54:28
构建分发的应用程序是构建工具的工作。查看[Gradle](http://www.gradle.org/),特别是[应用程序插件](http://www.gradle.org/docs/current/userguide/application_plugin.html),它将为您的应用程序生成批处理脚本和shell脚本,并使用这些脚本,代码和所有必需的库生成zip或tar文件。 – 2013-02-17 16:21:59
显然Windows 8上的计算机上缺少'java.mail'包(JAR文件) – 2013-02-17 15:16:44
您在这些系统上运行的是哪个版本的Java?哪些库与应用程序一起打包? – toniedzwiedz 2013-02-17 15:17:25
我在两台机器上运行Java 7u13,并且JavaMail应该与它打包在一起..但它似乎不是。我假设这将是我的问题,我如何打包一个图书馆的程序? – Leetfail 2013-02-17 15:19:10