【问题标题】:Why does this java code get stuck?为什么这个java代码会卡住?
【发布时间】:2015-05-16 03:18:16
【问题描述】:

我创建了一个新流程,但它永远不会完成。 我正在尝试使用 ProcessBuilder 和 Runtime,但都没有成功,都卡住了。

生成器代码:

ProcessBuilder a = new ProcessBuilder(
    "java",
    "-classpath",
    "D:\\TAP",
    "AnalizadorLexico",
    "<",
    "D:\\TAP\\Lol1.txt");
Process process=a.start();

运行时代码:

Process process=cmd.exec(
    "java -classpath D:\\TAP AnalizadorLexico < D:\\TAP\\Lol1.txt ");

该命令适用于 Windows CMD。

【问题讨论】:

  • 两者的结果如何?是否抛出异常?该过程“永远不会完成”,但它是否至少产生了您期望的结果,即它是否运行您指定的 Java 类?
  • “docs.oracle.com/javase/8/docs/api/java/lang/Process.html 和 docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html
  • @Jayan OP 说进程卡住了,这不应该是查看代码的情况。
  • 我知道其他情况(在stackoverflow.com/questions/3643939/… 中讨论)除非 OP 修复或提供上述 cmets 的答案,否则无济于事。
  • @Jayan 坦克很多!!!!有效 =) 真的很坦克。

标签: java process runtime processbuilder


【解决方案1】:

来自 cmets:

&lt;”适用于 cmd(或其他 shell)。 Java 程序不会将其解释为输入。您可以使用“cmd /c java progr &lt; input”,但这会使其特定于窗口。

更好的方法是使用真正的 Java API:参见ProcessBuilder

一旦你通过了这个,请检查另一个FAQ这个项目

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 2012-10-11
    • 2013-03-26
    • 1970-01-01
    • 2015-04-21
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多