これは長い間私を悩ませてきました。
Linux では、プロセス cmdLine が次のようになっていることがわかります。
/usr/java/jdk1.7.0_65/bin/java-Dsosa-Djava.security.policy=conf/sosa.policy-Dlog4j.configuration=properties/sosa-log4j.properties-Xms256m-Xmx1024m-classpath:/opt/HP/jboss/standalone/deployments/hpsa.ear/lib/sosa.jar:/opt/HP/jboss/standalone/deployments/hpsa.ear/lib/mwfm.jar
理解します:
-D : we specify property
-classpath : we specify the path to be searched
質問: JVM インスタンスの作成中に、-classpath オプションに複数の jar/ear がある場合、Java はどのようにしてメイン クラスまたはエントリ ポイントを見つけますか。
わかりました。次のように MANIFEST ファイルでメイン クラスを指定できます。Main-Class: MyPackage.MyClass
しかし、上記のjarには、MANIFESTファイルにメインクラスのエントリがありません。
- JAVA は、どのクラス ファイルに main があるか、どこから始めればよいかをどのように見つけますか?
- また、クラスパス内の 2 つの jar にメニフェスト ファイルがあり、Main-Class を指定している場合、どうなりますか?