2011-02-06 16 views
1

私のクラスを現在のディレクトリのサブディレクトリにあるフォルダに配置する必要があるビルド設定があります。私が '。'にいる場合、クラスは './somewhere_else/'になる可能性があります。メインクラスを既存のクラスに設定することはできません

問題は、私がこれを行うとき、私が見つけることができるメインクラスの値を設定できないということです。メインクラス。 「」私は時のファイルからjarファイルをビルドするとき、私は何の問題もないが、java.lang.NoClassDefFoundErrorの年代のメインクラスの結果について以下のすべての試み:

Main-Class: ClassName 
Main-Class: FolderName.ClassName 
Main-Class: FolderName/ClassName 

私は何を使用すべきですか?

答えて

1

jarファイル内のクラスは、パッケージ構造と同じディレクトリ構造にする必要があります。

  • あなたはメインクラスであることを(任意のパッケージなし)あなたのクラスClassNameを持つようにしたいのであれば、それはあなたのjarファイルのルートディレクトリになければなりません。
  • クラスをディレクトリFolderNameに入れたい場合は、この同じ名前をパッケージ名にする必要があります。つまり、ソースファイルの最初の(コメントではない)行はpackage FolderName;です。

問題が発生していない場合は、問題はありません。ディレクトリ外のディレクトリのフォルダレイアウトは、必ずしも自分のjarファイル内のレイアウトと同じである必要はありません。しかし、もしそれがパッケージ構造に合っていれば(もしかすると上記のディレクトリを追加しても)、フォルダ構造が適合するなら、それは依然として役立ちます。

0

メインクラスはクラス名(ディレクトリ構造なし)で参照する必要があります。この問題を解決するのに役立つものは、クラスパスとして配置したものです。 Main-Classのディレクトリがクラスパスにあることを確認してください。

0

あなたClassNameがパッケージFolderNameに存在する場合、それは次のようになります。 -

Manifest-Version: 1.0 
Main-Class: FolderName.ClassName 
Class-Path: <third-party>.jar <another-third-party>.jar 

彼らは道で、大文字と小文字が区別されます。

関連する問題