异常NoClassDefFoundError

时间:2012-04-22 22:34:14

标签: java jar javamail

我一直在研究一个邮件应用程序,我想压缩成.jar文件,以便用户可以双击运行。我正在使用javamail API。在日食中我添加了外部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文件包含到我的应用程序中,但没有任何作用。我该怎么办?

2 个答案:

答案 0 :(得分:1)

你如何运行你的申请?如果您是通过命令行运行应用程序,则应将所需的用分号分隔的jar添加到应用程序的类路径中:

  

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

答案 1 :(得分:1)

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

  1. 从要包含的jar文件中提取所有内容,将它们与您的应用程序合并,然后使用合并的内容创建一个新的jar文件。不要忘记,除了.class文件之外的文件也很重要。我不是Eclipse专家,但我知道Eclipse的一些方法只会包含.class文件,这些文件无效。

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

  3. 祝你好运!

相关问题