web-dev-qa-db-ja.com

NetBeansプロジェクトによって生成されたjarのマニフェストファイルでメインクラスをセットアップする方法

次の問題があります。 NetBeans Java 6.8にIDEプロジェクトがあります。コンパイルして、可能なすべてを含む.jarファイルを生成すると、META-INFは正しくありません。 main()メソッドを使用して、実行するクラスが含まれていません。

IDE内の[実行]ボタンをクリックすると、すべてが機能します。プロジェクトの設定も正しい方法で設定されます-私のプロジェクトのクラスを指します。

マニフェストファイルでMETA-INFフォルダーを追加しようとしましたが、管理しませんでした。

NetBeansでこれを手動で行う方法はありますか。マニフェストに欠落しているMainクラスを追加すると、すべてが機能することがわかりました。

(何らかのバグが発生したと思います...)

//編集:私が望んでいる結果は、NetBeansのビルドで作成されたjarをコマンドで実行可能にすることです。

Sun Documentation からの引用:

Main-Classがマニフェストファイルで設定されている場合、コマンドラインからアプリケーションを実行できます:Java -jar app.jar

19
Leni Kirilov

提案された解決策と私を助けたものの要約を作成します!

このバグレポートを読んだ後: NetBeans 6.8がJava Library Project。 のjarを作成する方法のバグ。

  1. プロジェクトルートにmanifest.mfファイルを作成します

  2. Manifest.mfを編集します。私のものは次のように見えました。

    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.1
    Created-By: 16.3-b01 (Sun Microsystems Inc.)
    Main-Class: com.example.MainClass
    Class-Path: lib/lib1.jar lib/lib2.jar
    
  3. ファイル/nbproject/project.propertiesを開きます

  4. 行を追加

    manifest.file=manifest.mf

  5. プロジェクトのクリーン+ビルド

これで.jarが正常にビルドされました。

ありがとうvkraemer

29
Leni Kirilov

NetBeans 6.8がJava Library Project のjarを作成する方法のバグに遭遇しているようです。

この問題は、回避策があることを意味します。

NB 6.8および/またはNetBeans 6.9-dev ...で検証できませんでした...

NetBeans.org Webサイト/課題トラッカーに登録し、課題を更新して「投票」を追加することをお勧めします。

4
vkraemer

簡単です。

  • プロジェクトを右クリック
  • プロパティに移動します
  • 実行 in カテゴリツリーに移動します
  • 右側のパネルでMain Classを設定します。
  • プロジェクトを構築する

それでおしまい。お役に立てれば。

3

7.3では、Properties/Build/Package/Copy Dependent Librariesを有効にするだけで、選択したターゲットに応じてビルドするときにメインクラスがマニフェストに追加されます。

1
Samuel Ventura

Yourしないで、プロジェクトを初めてビルドした後、プロジェクトファイルを調べてください。マニフェストファイルを探し、メモ帳で開くを選択します。

次の行を追加します。

_Main-Class: package.myMainClassName
_

packageはパッケージであり、myClassNamemain(String[] args)メソッドを持つクラスです。

Manifest.file = manifest.mfをproject.propertiesに追加し、プロジェクトディレクトリにmanifest.mfファイルを作成すると、NB 6.9で正常に動作し、NB = 6.8。

0
Tomas Zezula

私は読んで読んで読んで、なぜクラスが見つからないエラーを取得していたのかを理解しました。manifest.mfに行にエラーがありました:

Main-Class: com.example.MainClass

プロジェクトのプロパティダイアログ(右クリックプロジェクトファイル)、次に実行およびメインクラスに移動してエラーを修正しました=そして、Netbeansがここに置くことにしたものは何でも修正しました。 Netbeanは、クラス名の代わりにプロジェクト名を挿入しました。理由はわかりません。おそらくムラティナに酔いしれて...

0
githeko

これはまだ7.2.1の問題です。ライブラリを作成します。ライブラリを作成すると、アプリケーションにした場合に何が起こるかわかりません。

しかし、これを修正する方法を見つけました。編集nbproject/project.properties、次の行を次のようにfalseに変更します。

mkdist.disabled=false

この後、プロパティのメインクラスを変更すると、マニフェストに反映されます。

0
Jeff Palmer

本当の問題は、NetbeansがどのようにプロジェクトをJARにするかです。他の人が使用できるようにプログラムを実際に公開する場合、マニフェストファイルの「Class-Path:」は不要です。 Netbeansに外部ライブラリが追加されている場合、それはパッケージとして機能します。 WINRARなどのプログラムを使用して、jar内のファイルを表示し、ライブラリをパッケージとしてjarファイルに直接追加することをお勧めします。

Jarファイルの内部は次のようになります。

MyProject.jar

    Manifest.MF
         Main-Class: mainClassFolder.Mainclass

    mainClassFolder
         Mainclass.class

    packageFolder
         IamUselessWithoutMain.class
0
user1959349