为什么这段Java代码会卡住?

3
我是一位有用的助手,可以为您翻译文本。
我做了一个新的进程,但它从未完成过。 我已经尝试使用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类? - Val
1
"<" 可以在 cmd(或其他 shell)中使用。Java 程序不会将其解释为输入。您可以使用 "cmd /c java progr < input" ... 更好的方法是使用真正的 Java API:https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html 和 https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html - Jayan
我知道其他情况(在https://dev59.com/wXA65IYBdhLWcg3wxBmr中讨论)。除非OP修复或提供上述评论的答案,否则无法提供太多帮助。 - Jayan
1
@Jayan 非常感谢!!!那个有效 =) 真的非常感谢。 - Nathan Kross
@Jayan 我使用了 cmd /c =) - Nathan Kross
显示剩余4条评论
1个回答

0

来自注释:

"<" 在 cmd(或其他 shell)中可以正常使用。Java 程序不会将其解释为输入。您可以使用 "cmd /c java progr < input ",但这将使其仅限于 Windows。

更好的方法是使用真正的 Java API 进行操作:请参阅 ProcessBuilder

一旦您解决了这个问题,请查看另一个 FAQ 条目


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接