1

我一直在开发一个邮件应用程序,我想将它压缩成一个 .jar 文件,以便用户可以双击运行。我正在使用 javamail API。在 eclipse 中,我“添加了外部 jar”并添加了 mail.jar 文件,并且在 eclipse 中开发时,我能够使用 mail.jar 中的所有类。现在我想将它们打包成一个 jar 文件,所以我在命令行中使用了 -jar 工具,并指定了一个清单文件和我所有的类文件,但是当我运行 jar 时,我得到了这个异常:

   Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Multipart
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: javax.mail.Multipart
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 6 more

我知道这与 mail.jar 不在 jar 文件中有关,我尝试将 mail.jar 文件包含到我的应用程序中,但没有任何效果。我能做些什么?

4

2 回答 2

1

How do you run your application? If you're running your application through command line, you should add the required jars separated with semi-colon, into your application's classpath as such :

java -cp mail.jar;other_jars your-main-class

于 2012-04-22T22:43:43.540 回答
1

如果您想要一个 jar 文件中的所有内容,以便双击该 jar 文件并运行应用程序,您有两个主要选择:

  1. 从您想要包含的 jar 文件中提取所有内容,将它们与您的应用程序合并,然后使用合并的内容创建一个新的 jar 文件。不要忘记除了 .class 文件之外还有其他重要的文件。我不是 Eclipse 专家,但我知道 Eclipse 执行此操作的某些方式仅包含 .class 文件,这将不起作用。

  2. 使用诸如“onejar”工具之类的工具,该工具允许您将 jar 文件“嵌套”在 jar 文件中。

祝你好运!

于 2012-04-23T03:30:47.700 回答