1. ホーム
  2. java

[解決済み】マニフェストファイルにあるメインクラスではないクラスをJarから実行する方法

2022-04-14 03:25:51

質問

私は4つのクラスを持つJARを持っており、各クラスはMainメソッドを持っています。私は必要に応じてそれらの各々を実行できるようにしたい。私はLinuxボックス上のコマンドラインからそれを実行しようとしています。

E.g. The name of my JAR is MyJar.jar

主なクラスのディレクトリ構成は以下の通りです。

com/mycomp/myproj/dir1/MainClass1.class
com/mycomp/myproj/dir2/MainClass2.class
com/mycomp/myproj/dir3/MainClass3.class
com/mycomp/myproj/dir4/MainClass4.class

私は、マニフェスト・ファイルで1つのクラスをメインとして指定できることを知っています。しかし、実行したいクラスを実行するために、コマンドラインで何らかの引数を指定する方法はないでしょうか?

こんなことをやってみました。

jar cfe MyJar.jar com.mycomp.myproj.dir2.MainClass2 com/mycomp/myproj/dir2/MainClass2.class /home/myhome/datasource.properties /home/myhome/input.txt

そして、こんなエラーが出ました。

com/mycomp/myproj/dir2/MainClass2.class : no such file or directory

(上記のコマンドでは、'/home/myhome/datasource.properties' と '/home/myhome/input.txt' がコマンドライン引数です).

解決するには?

マニフェスト・ファイルにMain-Classを記述せずにjarを作成することができます。そうすると

java -cp MyJar.jar com.mycomp.myproj.dir2.MainClass2 /home/myhome/datasource.properties /home/myhome/input.txt