2017-03-04 4 views
0

ここで私が遭遇したエラーは「メインクラスMCPを見つけることができません。メインクラス(良いクラスパス、良いマニフェスト、良いクラス)を見つけたりロードすることができません

私のプロジェクトでは、このように構成されている:私はjavac src/tp2/*.java -d classと私のプロジェクトを構築しています

- src (directory containing the sub-directory (and package) "tp2" containing the source files (their package is "tp2")). 
- class (directory containing the directory (and package) "tp2" containing the class files) 
- META-INF (directory containing "MANIFEST.MF" (only one line : "Main-Class: tp2.MCP")). 
  1. 私は私が私のCLASSPATH./classを追加したことをお伝えしたいと思いますjar cfmv MCP.jar META-INF/MANIFEST.MF class/tp2/
  2. と私「の.jar」を作成します。

しかし、誤差が依然として存在している...そして、私はjar -tf MCP.jarを行うときに、私が持っている:

META-INF/ 
META-INF/MANIFEST.MF 
class/tp2/XXYYZZ.class 
class/tp2/MCP.class 

クラスパスが正しく実行時に読まれていないようですか?

答えて

0

あなたのjarファイルにはclassディレクトリが含まれています。したがって、パッケージ名の一部として扱われます。 man jarから

java cfmv MCP.jar META-INF/MANIFEST.MF -C class . 

をあなたのjarファイルを作成するときに

-Cフラグを使用します。

-C dirの次のinputfiles引数を処理するときに一時的にディレクトリにディレクトリを変更します。複数の-Cディレクトリ入力ファイルが許可されています

+0

"class.tp2"と書いてもどうですか?マニフェストで? –

+0

'javac'コマンドから、あなたのパッケージ名が' class.tp2'ではなく 'tp2'であることが明らかです。 – Jeremy

+0

はい、ファイルの最初の行に "class.tp2"と書かれていればclass.tp2; "私はマニフェストにも "class.tp2"と書いていますか?それは私が-Cを使わないようにしますか? –

関連する問題