アプリ版:「スタンプのみでお礼する」機能のリリースについて

main()を持つクラスが2つ以上あるexecutable jar
を作成して、
main()を持つクラスを
必要に応じて、起動仕分けることは
可能なのでしょうか?

もし、可能であるとすれば
マニフェストファイルには
どのように記述すればよいのでしょうか?

そして、
java -jar
コマンドで起動するときにどのようにすればよいのでしょうか?


不可能であれば不可能であるということを
教えてください。

以上

A 回答 (2件)

マニフェストファイルを用意しなくても、クラス名を直接指定する通常のコマンド形式


java -classpath <jarファイル名> <mainがあるクラス名> <コマンドライン引数>
で <mainがあるクラス名> を変えれば起動仕分けることは可能です。

マニフェストファイルには Main-Class 属性を一つしか定義できないので、クラス名を指定しない
java -jar <jarファイル名> <コマンドライン引数>
の形式で起動仕分けることは出来ないと思います。
    • good
    • 2
この回答へのお礼

ありがとう。

java -classpath <jarファイル名> <mainがあるクラス名> <コマンドライン引数>

ですが。

java <mainがあるクラス名> -classpath <jarファイル名> <コマンドライン引数>

に少し順番を変えてみると。

うまく起動するようでした。

でも、この方法だと、jarファイルとは別に
mainを持つクラスファイルが別途必要になってしまう。

一応、
1)mainを持つクラスがjarファイルの中に
含まれているケース

2)mainを持つクラスがjarファイルの中に
含まれていないケース

の2つでうまく起動できることを確認しましたが。

やはり、
mainを持つクラスファイルが別途必要になってしまう。

jarファイルだけで、起動することができ、
しかも、jarファイルの中にmainをもつクラスが
複数ある時に、どれをエントリポイントにするかを
起動時に切り分けられるような方法が知りたくて
今回の質問をした次第です。
よろしく、お願い致します。

たぶん、自分もうすうす無理だとおもっているのですが
javaコマンドとかのマニアックな引数や
あまり、知られていないやりかたとかで、
もしかしたら、知っている方がいるかもしれない
のでは?とおもったので、質問しています。


以上

お礼日時:2004/08/14 00:18

> mainを持つクラスファイルが別途必要になってしまう。



そんなはずは無いはず……

例えば、SampleClass1 と SampleClass2 の二つのクラスがあって、これらが単一のアーカイブ Samples.jar に入っているとき、
> java -classpath Samples.jar SampleClass1

> java -classpath Samples.jar SampleClass2
とで SampleClass1 の main と SampleClass2 の main とを使い分けられませんか?
    • good
    • 3
この回答へのお礼

ありがとう、ございます。
私の勘違いでした。
できました。
このやりかただと、
jarコマンドでjarファイルを作成する時
にマニフェストファイルを指定する必要も
ないみたいです。

複数のバッチコマンドがあって、共通の
クラス群を使用していて、
変更したときにjarファイルをひとつだけ
更新するだけでOKな状態にしておきたかったので
この質問をしました。
おかげで様でそのような方向性で
動いていけそうです。
ありがとうございました。

お礼日時:2004/08/18 13:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています