这是我的问题: 我有一个.bat文件,它有许多命令。当我使用processbuilder从我的java程序中调用这个bat文件时,它开始在.bat文件中逐行执行命令。但是,当它到达执行perl程序的最后一行时,它会挂起并且程序永远不会结束。它永远挂在那里。任何想法为什么这可能会发生。仅供参考,perl代码没有问题,我可以执行从Java程序执行批处理文件时出错
1
A
回答
0
嘿,我能够解决这个问题。我所要做的只是在我的java代码中包含一个关闭进程输出流的声明。没有它,它正在等待命令行中的perl程序被永久执行。我不完全确定这种行为,任何信息都可以帮助
2
您的perl程序是否写入标准输出? 我怀疑问题是Java进程将子进程的标准输出和标准错误输出重定向到管道。 该管道的接收端连接到java程序,因此如果您未能读取其输出,则从Java调用的写入标准输出/错误的任何子进程都会阻塞。 您必须从Java程序中删除perl程序的输出或读取子进程的输出(Process.getInputStream()
和/或Process.getErrorStream()
)。
+0
:嘿,我能够解决这个问题。我所要做的只是在我的java代码中包含一个关闭进程输出流的声明。没有它,它正在等待命令行中的perl程序被永久执行。我对这种行为并不确定,任何信息都会有所帮助。 – Max 2011-03-06 06:55:52
相关问题
- 1. 执行批处理文件时出错
- 2. 从.CHM文件执行批处理文件时出错
- 3. 远程执行批处理文件java
- 4. Java程序在执行批处理时抛出异常
- 5. Java&SQL - 批处理必须执行或清除批处理时出错
- 6. 无法使用批处理文件执行java程序
- 7. 执行Java应用程序的批处理文件
- 8. 批处理文件执行
- 9. 批处理文件未从php执行
- 10. 从批处理文件中执行.exe
- 11. 从C#执行批处理文件#
- 12. 从Java程序执行Ghostscript时出错
- 13. 如何从批处理文件执行c#console应用程序
- 14. 从Windows执行批处理文件窗体应用程序
- 15. 处理从批处理文件运行Java的错误
- 16. 批处理文件,使另一个批处理文件执行
- 17. 从批处理文件运行Java打包程序
- 18. 无法从java程序运行批处理文件
- 19. 从java批处理文件运行jar
- 20. 从java运行批处理文件
- 21. 从java运行批处理文件?
- 22. 从VB脚本运行批处理文件时出错
- 23. 通过perl脚本执行批处理时,将批处理文件错误和输出到日志文件
- 24. 从批处理执行java JCL
- 25. 批处理文件被应用程序执行时重定向命令输出
- 26. 执行多个批处理文件后,同时完成批处理文件
- 27. 使用进程和运行时类执行批处理文件
- 28. 如何从java执行批处理文件?
- 29. 我们如何从Java执行批处理文件
- 30. 使用Java在远程系统上执行批处理文件
你可以从java运行perl,带或不带'.bat'脚本吗? – 2011-03-01 10:36:23
我的猜测是PATH环境var没有设置,因此没有找到perl解释器。尝试提供tjhe perl解释器的完整路径:c:\ path \ to \ perl \ perl.exe ... – rene 2011-03-01 10:39:14
我想我们需要看到批处理文件和Perl脚本有任何帮助。看看你是否可以在一个小例子中复制bug行为,你可以在这里发表。 – 2011-03-01 13:25:39