- PR -

JWSでDLしたApplicationからのプロセス起動について

投稿者投稿内容
uezo
会議室デビュー日: 2004/05/24
投稿数: 6
投稿日時: 2005-08-16 18:31
いつもお世話になっております。
JavaWebStartについて、質問させていただきます。

以下のようなjnlpファイル(抜粋)を記述して、Clientでaaa.Mainを起動しています。
<resources>
<j2se version="1.5+"/>
<jar href="aaa.jar" main="true"/>
<jar href="bbb.jar"/>
</resources>
<application-desc main-class="aaa.Main"/>
<argument>abc=123</argument>
</application-desc>

aaa.Mainの中で、bbb.jarの中に格納されているbbb.Mainを起動するために
Runtime.exec()でjavaw.exeコマンドを起動しているのですが、
その時に指定するClassPathをSystem.getProperty("java.class.path")で
取得してもbbb.jarのパスはその結果に含まれていませんよね。
このbbb.jarが格納されたパスを取得する方法はあるのでしょうか。
是非、ご教示ください。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-16 19:13
キャッシュされているローカルのjarファイルのパスを取得できれば(aaa.Main内で java.class.path を見るとか?)javaw.exe の起動オプションに追加できますね。
しかし、なぜ JWS アプリケーションから敢えて別プロセスで起動しなければならないのでしょうか?
uezo
会議室デビュー日: 2004/05/24
投稿数: 6
投稿日時: 2005-08-17 11:54
インギさん、ご回答ありがとうございます。

>キャッシュされているローカルのjarファイルのパスを取得できれば(aaa.Main内で >java.class.path を見るとか?)javaw.exe の起動オプションに追加できますね。

aaa.Mainの中で"java.class.path"を取得しても、キャッシュされたjarファイルの
classpathは含まれていませんでした。javax.jnlpパッケージのクラスを使うのか
とも思いましたが、それらしいクラスが見当たりませんでした。

>しかし、なぜ JWS アプリケーションから敢えて別プロセスで起動しなければならないのでしょうか?

最初に説明すべきでしたね。
このaaa.Mainはランチャーの役割を担っていて、一緒にDLされたjarファイルの
JavaApplicationを起動するためです。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-17 12:34
jnlpのAPI で特定のURLをブラウザに開かせるのがあったと思います。
bbb.jar のプログラムを別の JWS アプリケーションにしておいて、aaa.Main 内から bbb.jar の jnlp ファイルを呼び出すようにしてはいかがでしょうか。

または純粋に JWS に付属のランチャーを使うとか。
uezo
会議室デビュー日: 2004/05/24
投稿数: 6
投稿日時: 2005-08-17 15:10
インギさん、すばやいご回答ありがとうございます。

すみませんが、先ほどの回答について1件教えてください。

>または純粋に JWS に付属のランチャーを使うとか。

この「JWSに付属のランチャー」ってJ2SDKに付属しているのですか?
フォルダ配下を探しましたが見当たりません。
申し訳ありませんが、それはどこにあるのでしょうか?
いまさらですが、JDKのバージョンは1.5.0_04です。

よろしくお願いします。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-08-17 15:15
aaa.jarのクラスをロードしているClassLoaderからはbbb.jarが見えているはずだと思いますので、ランチャーと本体のJVMを分ける必要が無いなら、たとえばaaa.Mainからbbb.Main#main(String args[])を呼んでしまうという手もありますが、いかがでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-17 15:35
ランチャーは Windows であれば Program Files/Java/jre1.5.0_xx/bin/javaws.exe
Mac ならば アプリケーション:ユーティリティ:Java/Java Web Start
です。
Winなら「ショートカットを作成」「プログラムに登録」
Macなら「アプリケーションを作成」
をしてしまえば普通のアプリケーションと同じに扱えますから、一般的に出回っているランチャーや Dock、Quick Launcher を使ってしまうのも手ですね。
uezo
会議室デビュー日: 2004/05/24
投稿数: 6
投稿日時: 2005-08-17 15:45
シュンさん、コメントありがとうございます。

>aaa.jarのクラスをロードしているClassLoaderからはbbb.jarが見えているはずだと思いますので、ランチャーと本体のJVMを分ける必要が無いなら、たとえばaaa.Mainから>bbb.Main#main(String args[])を呼んでしまうという手もありますが、いかがでしょうか。

「aaa.Mainとbbb.MainではJVMを分けること!」が前提になってまして...

それと、JVMがらみでもう1件質問があります。
aaa.jarをJWSでDLすると、Client(Windows)にはC:\Documents and Settings\...に
RMaaa.jarとRTaaa.jarができるのですが、理由はわかりますか?
classファイルはRMaaa.jarに入っているようです。

スキルアップ/キャリアアップ(JOB@IT)