2

Javaに別のプログラムを実行させようとしていますが、終了コード128ですぐにエラーが発生し続け、stdoutまたはstderrに何も送信されませんでした。私はまだ運がない単純な「java-version」を試しました。cmdウィンドウで実行すると、正常に実行され、このコードは同様に構成された他のマシン(Windows Server 2003 x64、Java 1.6 update 25)で機能します。

コマンドラインで実行する場合:

C:\Documents and Settings\zugwalt>java -version

出力:

java version "1.6.0_25" Java(TM) SE
Runtime Environment (build1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

次に、このコードを試します。

try {
            List<String> cmd = new LinkedList<String>();
            cmd.add("java");
            cmd.add("-version");
            ProcessBuilder apb = new ProcessBuilder(cmd);
            apb.redirectErrorStream(true);
            System.out.println("STARTING w00t!");
            Process p = apb.start();

            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null; 
            while ((line = input.readLine()) != null) {
                    System.out.println("OUTPUT: "+line);
            }
            System.out.println("EXIT: "+p.exitValue());
            System.out.println("WAIT FOR: "+p.waitFor());
        } catch (Exception ex) {
            System.out.println("CAUGHT: "+ex.getMessage());
            ex.printStackTrace();
        }

出力は次のとおりです。

STARTING w00t!  
EXIT: 128  
WAIT FOR: 128
4

2 に答える 2

1

そこで、多数のシステムプロセスを強制終了することで、これを「解決」しました。この問題は、 http://www.arcanadev.com/support/kb/K00000329.aspxで説明されている問題と密接に関連していると考えられます。このプロセスでは、Javaのexecを呼び出そうとして、使用可能なヒープスペースまたはメモリが不足しています。非常に奇妙な。

于 2011-05-25T15:19:03.573 に答える
0

p.waitFor()の前に電話する必要がありますp.exitValue()

于 2011-05-17T21:48:35.943 に答える