0

私は以下を行いました:

subst A: "C\Desktop"

今Javaコードから:

String command= "java -jar A:\test.jar"
Process process = Runtime.getRuntime().exec(command);

JVMはここでハングしているようで、この行を実行することはありません。実行"java -jar C:\Desktop\test.jar".すると正常に実行されます。

Runtime.getRuntimeは仮想hardriveを解決しませんか?ありがとう

4

2 に答える 2

4

\\t私はあなたが持っていると持っていないことを前提としています\t、そしてあなたはエラーストリームから読んでいるのであなたはどんなエラーでも見ることができます。\tタブ文字です。

\(パス区切り文字として使用するMS-DOSの喜び;)

発生しているエラーをダンプすると、問題が発生するはずです。

于 2012-08-06T08:05:50.660 に答える
1

java.lang.ProcessのJavadocによると

親プロセスは、これらのストリームを使用して、サブプロセスに入力を供給し、サブプロセスから出力を取得します。一部のネイティブプラットフォームでは、標準の入力ストリームと出力ストリームに限られたバッファサイズしか提供されないため、サブプロセスの入力ストリームの書き込みまたは出力ストリームの読み取りに失敗すると、サブプロセスがブロックされ、デッドロックが発生する可能性があります。

つまり、関連するプロセスでバッファオーバーフローが発生する原因となる、データの読み取りまたは書き込みをすぐに行っていないということです。これは考えられる問題である可能性があります。javaworldの記事を読んで、読み取りと書き込みを別々のスレッドにすぐに実装することを検討してください。

于 2012-08-06T08:18:13.103 に答える