2

そこで、NetBeansを使用したSwing GUIを使用してこの(非常に単純な)プログラムを作成し、ビルドをクリックしてjarファイルを作成しました。ダブルクリックして実行すると、メインクラスが見つからなかったことがわかります。確認したところ、間違いなくそこにあると思います。しかし、コマンドプロンプトから実行すると、完全に機能します。この奇妙な振る舞いの簡単に判断できる理由はありますか(ソースコードが必要な場合は、ここに投稿できます)?

4

2 に答える 2

7

NetBeansで必要と思われるものは次のとおりです。

  • プロジェクトはメインプロジェクトである必要があります(プロジェクトリストでプロジェクトを右クリックします)。
  • プロジェクトのプロパティでメインクラスを設定する必要があります。(右クリック、[プロパティ]、[実行]、[メインクラス])。

次に、プロジェクトを右クリックして「クリーンアンドビルド」を実行すると、jarがdistサブディレクトリにビルドされます。

それでも問題が解決しない場合は、もっと長い話があります...

jarファイルをダブルクリックして実行すると、オペレーティングシステムは、コマンドラインから次のように入力したかのように動作します。

java -jar filename.jar

(コマンドラインから機能すると言うとき、これはあなたが入力しているものですか?)

その時点で、Java実行可能ファイルはjar内の.という名前のファイルを探しますMETA-INF/MANIFEST.MF。そして、そのファイルの内容で、プロパティの値を探しますMain-Class。そして最後に、jar内でその名前のクラスを検索し、静的main(String[])メソッドを実行します。

したがって、jarの実行に失敗した場合は、次の手順を実行して、何が起こっているかをデバッグできます。

  • NetBeansでプロジェクトをクリーンアップして再構築します。
  • クラスが実際にjarにあることを再確認してください。
    • コマンドプロンプトを開始する
    • cdプロジェクトのdistサブディレクトリに移動します。
    • のようなコマンドを使用してjar tf filename.jar、そこにあるものを一覧表示します。
  • MANIFEST.MFファイルが正しい ことを再確認してください。
    • 再びコマンドプロンプトで
    • cddistディレクトリに。
    • のようなコマンドを使用してjar xf filename.jar META-INF/MANIFEST.MF、マニフェストを抽出します。
    • そのファイルの内容(例type META-INF\MANIFEST.MF)を見Main-Classて、適切なクラスに設定されていることを確認してください。

上記のすべてがチェックアウトされている場合は、ファイルをダブルクリックすると機能するはずです。

于 2012-06-15T19:58:37.187 に答える
2

含まれているプロジェクトを「メインプロジェクト」として設定しましたか?

于 2012-06-15T19:18:16.107 に答える