2012-04-22 34 views
1

我一直在研究一個郵件應用程序,我想壓縮成一個.jar文件,以便用戶可以雙擊運行。我正在使用javamail API。在eclipse中,我「添加了外部jar」並添加了mail.jar文件,並且我可以在eclipse中開發時使用mail.jar中的所有類。現在我想將它們打包成一個jar文件,所以我在命令行中使用了-jar工具,並且指定了清單文件和我的所有類文件,但是當我運行jar時,出現以下異常:異常NoClassDefFoundError

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文件包含到我的應用程序中,但沒有任何效果。我能做什麼?

+0

您可能已經嘗試過了,但是您還沒有成功將mail.jar添加到您的類路徑中。 – EJP 2012-04-22 22:52:05

回答

1

你如何運行你的應用程序?如果你正在運行通過命令行應用程序,你應該增加與分號分隔,到應用程序的類路徑中,例如需要的jar:

java命令的mail.jar; other_jars你 - 主 - 類

1

如果你想要的一切,在一個jar文件,所以你可以雙擊一個jar文件並運行應用程序,你有兩個主要選擇:

  1. 提取一切從要包含的jar文件,將它們與您的應用程序合併,然後用合併的內容創建一個新的jar文件。不要忘記,除了.class文件之外,還有其他文件。我不是Eclipse專家,但我知道Eclipse所做的一些方法,它只包含.class文件,這些文件不起作用。

  2. 使用諸如"onejar" tool之類的工具,可以將jar文件「嵌套」到jar文件中。

祝你好運!

相關問題