【问题标题】:Java program working on Windows 7, but not windows 8?Java 程序可以在 Windows 7 上运行,但不能在 Windows 8 上运行?
【发布时间】:2013-02-18 00:03:38
【问题描述】:

你们让我有自我意识。我会努力让这个更好。

好的,据我所知,这个程序(别杀我..我下载了)仅适用于 Windows 7 和 Ubuntu。当您在 Windows 8 上打开它时,它会显示“Java 异常错误”。

我认为这与文件末尾的catch(messagingException ex) 有关。我承认,我对 java 知之甚少,但你必须从某个地方开始......不是吗?我知道 java 适用于所有平台!

我还用多个文件和多个 Gmail 帐户尝试过这个程序...我什至用我的 Comcast 电子邮件地址尝试过。
我将“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);
            }
        }
}

如果您需要有关该程序的任何其他信息,请询问!

【问题讨论】:

  • 显然在装有 Windows 8 的计算机上缺少 java.mail 包(JAR 文件)
  • 您在这些系统上运行的是哪个版本的 Java?应用打包了哪些库?
  • 我在两台机器上都运行 Java 7u13,JavaMail 应该和它一起打包。但它似乎没有。我假设这将是我的问题,如何将库与程序打包?
  • 不,javamail 不是基础 jdk 的一部分。
  • 我输入的方式很奇怪。我在两台计算机上都运行 7u13。我以为javamail会和jar文件一起打包,而不是程序,但我猜不是?

标签: java windows jakarta-mail


【解决方案1】:

You have to download Java Mail

如果此应用程序需要 JavaMail,您应该构建一个安装程序以将所需的 JAR 打包并安装为 JavaMail。

【讨论】:

  • 谢谢,但是有没有办法把它添加到程序本身中?这样我就不用告诉大家下载了?
  • 所以你只要运行“Mail.jar”就可以在你的电脑上获取javamail?
  • 为分发构建应用程序是构建工具的工作。查看Gradle,特别是application plugin,它将为您的应用程序生成批处理和shell脚本,并使用这些、您的代码和所有必需的库构建一个zip或tar文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 2014-02-24
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多