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

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

4

2 に答える 2

1

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

  1. 含める jar ファイルからすべてを抽出し、それらをアプリケーションにマージして、マージされた内容で新しい jar ファイルを作成します。重要な .class ファイル以外のファイルがあることを忘れないでください。私は Eclipse の専門家ではありませんが、Eclipse がこれを行ういくつかの方法には .class ファイルしか含まれず、機能しないことを知っています。

  2. jar ファイル内に jar ファイルを「ネスト」できる「onejar」ツールなどのツールを使用します。

幸運を!

于 2012-04-23T03:30:47.700 に答える
1

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

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

于 2012-04-22T22:43:43.540 に答える