2

SWT (eclipse.org/swt) を使い始めました。プロジェクトを実行可能な jar にエクスポートすると、コマンド ライン、つまりjava -jar filename.jar. ただし、ダブルクリックしても機能しません。しかし同時に、他の jar ファイルをダブルクリックすると、問題なく動作します。
この瓶のどこが悪いのでしょうか?

4

3 に答える 3

0

.jar ファイルには多くの .class ファイルが含まれているため、Java は実行するクラスをどのように認識しますか?

答えは、META-INF/MANIFEST.MF という名前のマニフェスト ファイルが必要です。これを .jar ファイルのルートに置き、次のような行を追加します。

    Main-Class: com.something.MyApp

1行だけ必要です。アプリのバージョン、必要な場合は特別なクラスパスなど、他にも入力できるものがあります。.jar ファイルを確認し、このファイルが存在するかどうかを確認します。存在しない場合は作成する必要があります。

Eclipse ウィザードを使用して MANIFEST.MF ファイルを作成することもできます。プロジェクトを右クリックして、[エクスポート] | [エクスポート] を選択します。Jar ファイルを開き、ウィザードのページに従います。メイン クラスを選択するオプションは必須ではないページの 1 つにあるため、[完了] ではなく [次へ] を使用します。

あなたのMANIFEST.MFには次のような行があると述べました

    Rsrc-Main-Class: Main
    Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

これは、.jar. Eclipse が提供するクラス JarRsrcLoader で main() メソッドを探します。Eclipse の実行中に .jar を実行すると、そのクラスがパスにある可能性があります。しかし、Eclipse を停止するとうまくいかないと思います。

于 2012-07-24T02:21:38.483 に答える
0

コマンドラインから使用するjavaと、ダブルクリックで使用するjavaは、2つの異なるバージョンのjavaである可能性があります。コマンドラインから使用されているバージョンを確認します: java -version.

ダブルクリック時に使用するJavaについては、Windows SDKツールのFile Type Verifierを使用してください。

入手したら、コマンドラインからエラーを再現できるはずです。その後、より多くの出力が得られる場合があります。

于 2020-07-13T14:02:58.357 に答える