SWT (eclipse.org/swt) を使い始めました。プロジェクトを実行可能な jar にエクスポートすると、コマンド ライン、つまりjava -jar filename.jar
. ただし、ダブルクリックしても機能しません。しかし同時に、他の jar ファイルをダブルクリックすると、問題なく動作します。
この瓶のどこが悪いのでしょうか?
3 に答える
.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 を停止するとうまくいかないと思います。
コマンドラインから使用するjavaと、ダブルクリックで使用するjavaは、2つの異なるバージョンのjavaである可能性があります。コマンドラインから使用されているバージョンを確認します: java -version.
ダブルクリック時に使用するJavaについては、Windows SDKツールのFile Type Verifierを使用してください。
入手したら、コマンドラインからエラーを再現できるはずです。その後、より多くの出力が得られる場合があります。