このページで解決しない高度なJavaのシステム障害はJaTSにお任せください

Trouble 14: プロセスに関する問題



<Q14-1>Runtime.exec()で起動したJavaアプリケーションがしばらくして停止してしまいます。


<発生環境>
OS Win98OSR2
JDK JDK1.3.0
Vender Sun
<A14-1>
Runtime.exec()で起動された子プロセスが標準出力に出力を行っているためです。
親-子関係になったVM間のバッファサイズは1024バイトであり、それ以降を出力しようとするとブロックし、子プロセスの動作が停止してしまいます。
そのため、子プロセスは標準出力に表示しないか、もしくは親プロセスでVM間のバッファのストリームを読み捨てる必要があります。
Page Top

<Q14-2>java.lang.Runtime.exec()を複数回呼ぶと、execが立ち上げたスレッドが無限ループに入ることがあります。2回で起きることもあるし、100回以上ループする場合もあります。

しかし、Windows2000上では1000回ループさせても問題はありませんでした。

<発生環境>
OS Red Hat Linux 6.2
JDK JDK1.3β
Vender IBM
<A14-2>
SunのVMに変更し、execを使用するのは1つのVMにつき1回のみとすることで、解決できます。
Page Top

<Q14-3>start コマンドを使用して複数の Java プログラムを起動するバッチファイルを作成しましたが、コマンドプロンプトウィンドウが複数開いてしまいます。コマンドプロンプトウィンドウを開かずに起動する方法はありますか?

バッチファイルの内容
start java myclass1
start java myclass2

<発生環境>
OS Windows2000/XP
JDK JDK1.4.1
Vender Sun
<A14-3>
以下のように、start コマンドの /b オプションを使用することで、新しいウィンドウを開かずにアプリケーションを実行することができます。startコマンドの詳細については Windows ヘルプを参照してください。

start /b java myclass1
start /b java myclass2

また、java コマンドの代わりに javaw コマンドを使用しても同様の効果を得ることができます。

start javaw myclass1
start javaw myclass2

javaw コマンドに関してはこちらを参照して下さい。
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/java.html
Page Top

注意:本文書の内容に誤りがあり、またこの文書によって不利益を被っても、
Acroquest Technology 株式会社は一切関知いたしません。

  • 現象別Index
  • 原因別Index

Find Bugsバグ詳細

Find Bugs Bug Descriptions日本語版

RSSで更新情報を取得する

RSSとは、ホームページの更新情報を配信する為のフォーマットです。
RSSを利用すると、登録したページの情報が更新された場合に、更新情報を自動的に受け取る事ができます。

詳細

弊社小森が執筆致しました

Javaでオブジェクト指向開発

Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。
本書は、Javaのソフトウェア開発を中心に事業を発展させてきたAcroquest社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。

メールマガジン配信中

Javaトラブルシューティングのメルマガをはじめました!是非ご購読ください

詳細