2012-03-13 46 views
0

我想在Windows 7下运行一个java应用程序作为衍生的子进程。 我使用的命令是:java -cp ...list of libs... 问题是,一次应用程序加载时,它没有自己的标准输入流,但尝试使用其父级的标准输入,导致命令无法传递给它。 是否有任何可以扭转这种行为的'java.exe'参数,所以子进程会有它自己的stdin? 感谢从cmd.exe控制台Java应用程序'stals'stdin

更新: 对不起我不是一个Java程序员,但会发生这种事,因为这条线在Java应用程序中我运行:

this(new IO(System.in, System.out, System.err), STANDARD_INPUT_PROMPT, STANDARD_RESULT_PROMPT); 

如果是这样,什么是适当的替代品System.in

+0

你是如何产生JVM的? – TofuBeer 2012-03-13 22:45:31

+0

什么是IO类?我从来没听说过。 – 2012-03-13 23:00:50

+0

@TofuBeer不确定你的意思,我使用带指定参数的“java.exe”来运行应用程序。 – user971956 2012-03-13 23:59:28

回答

0

为什么不直接启动一个新的命令提示符来生成子进程?我不为Windows环境编程很多很多,但我得到了以下工作:

public class Main { 
    public static void main(String [] args) { 
    try { 
     Runtime.getRuntime().exec("cmd /k start cmd /k echo hello"); 
    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 
    } 
} 

如果你与你的子计划更换回声和你好必要的参数,那么你应该所有设置接收标准输入。换句话说:

Runtime.getRuntime().exec("cmd /k start cmd /k java -cp ...list of libs..."); 

这样做可能有更漂亮的方法。

+0

有趣的想法,希望它会工作,但由于某种原因,Java应用程序仍然接管了cmd.exe(甚至第二个)stdin。有没有像在java中的“主”stdin流? – user971956 2012-03-13 23:58:44

相关问题