2012-04-22 13 views
1

私は、ユーザーがダブルクリックして実行できるように、.jarファイルに圧縮したいメールアプリケーションに取り組んでいます。私はjavamail APIを使用しています。 eclipseで "external 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 

これは、jarファイルにないmail.jarと関係があり、私のアプリケーションにmail.jarファイルを含めようとしましたが、何も動作しません。私に何ができる?

+0

あなたは「試した」かもしれませんが、あなたのクラスパスにmail.jarを追加できませんでした。 – EJP

答えて

1

アプリケーションをどのように実行しますか?あなたは、コマンドラインからアプリケーションを実行している場合は、次のようなアプリケーションのクラスパスに、セミコロンで区切っ必要なjarを追加する必要があります

のjava -cpのmail.jarの、あなたのメインクラス

をother_jars
1

あなたはその1つのjarファイルをダブルクリックしてアプリケーションを実行できるように、1つのjarファイル内のすべてをしたい場合は、次の2つの主要な選択肢があります。

  1. からすべてを抽出jarファイルを追加し、アプリケーションとマージして、マージされた内容の新しいjarファイルを作成します。重要な.classファイル以外のファイルがあることを忘れないでください。私はEclipseのエキスパートではありませんが、Eclipseがこれを行う方法のいくつかは、.classファイルのみを含むことがわかりますが、これはうまくいきません。

  2. "onejar" toolのようなツールを使用すると、jarファイル内にjarファイルを「ネスト」できます。

幸運を祈る!