Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用程序&x27;偷窃';来自cmd.exe控制台的stdin_Java - Fatal编程技术网

Java应用程序&x27;偷窃';来自cmd.exe控制台的stdin

Java应用程序&x27;偷窃';来自cmd.exe控制台的stdin,java,Java,我正在尝试在Windows7下以派生子进程的形式运行java应用程序。 我正在使用的命令是:java-cp…libs列表… 问题是,一旦应用程序加载,它就没有自己的stdin流,而是尝试使用其父级的stdin,这导致命令无法传递给它。 “java.exe”是否有任何参数可以改变此行为,以便子进程有自己的stdin? 谢谢 更新: 很抱歉,我不是java程序员,但由于我正在运行的java应用程序中的这一行,可能会发生这种情况: this(new IO(System.in, System.out,

我正在尝试在Windows7下以派生子进程的形式运行java应用程序。 我正在使用的命令是:
java-cp…libs列表…
问题是,一旦应用程序加载,它就没有自己的stdin流,而是尝试使用其父级的stdin,这导致命令无法传递给它。 “java.exe”是否有任何参数可以改变此行为,以便子进程有自己的stdin? 谢谢

更新: 很抱歉,我不是java程序员,但由于我正在运行的java应用程序中的这一行,可能会发生这种情况:

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

如果是这样,那么什么是
系统的适当替代品?

为什么不启动一个新的命令提示符来生成子进程呢?我没有为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();
    }
  }
}
如果您用子流程程序替换了echo,用必要的参数替换了hello,那么您应该全部设置为接收stdin。换句话说,你应该:

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

顺便说一下,可能有一种更漂亮的方法来实现这一点。

您是如何生成JVM的?什么是
IO
类?我从来没有听说过它。@TofuBeer不确定你的意思,我正在使用带有指定参数的“java.exe”来运行应用程序。@MikeClak我认为这是一个标准的java类,但感谢你提出它,我将研究它“我正试图在Windows 7下将java应用程序作为派生的子进程运行”-你是如何做这一步的?有趣的想法,had希望它能工作,但由于某种原因,java应用程序仍然接管了cmd.exe(甚至是第二个)stdin。java中是否有类似于“主”stdin流?