当前位置: 首页 > 面试题库 >

Java runtime.exec无法正确执行

亢嘉茂
2023-03-14
问题内容

我正在获取一个exe文件,必须在Windows Server 2008
R2上使用Java(版本6)执行该文件。现在有一个我不太了解的问题。使用命令行执行文件时

"C:\test.exe param1 param2"

它可以正常工作,但是当我执行文件时

Process proc = Runtime.getRuntime().exec("C:\\test.exe param1 param2");
proc.waitFor();

我可以在Windows任务管理器中看到test.exe,它开始运行(它会创建一个记录该状态的日志),但随后它不再执行任何操作。test.exe用0%无休止地运行,我必须手动终止该进程。这样做之后,java程序将继续并

proc.exitValue()

为“ 1”,因此java识别出我已经杀死了该进程。我还尝试在批处理文件中编写命令行,并使用.exec()执行该命令行,但它没有任何改变。

真正令我困惑的是,它可以通过Windows命令行完美运行,但不能通过.exec()来运行。有谁知道可能导致这种问题的原因?还是更有可能是test.exe引起了问题?

最好的问候

编辑:在.exec中写错了路径


问题答案:

由于您的程序会产生大量输出,因此我的假设是它试图写入标准输出(在Linux下是管道,对于Windows不知道)会卡住。

试试这个:

final byte[] devnull = new byte[1024];

final ProcessBuilder builder = new ProcessBuilder("C:\\test.exe", "param1", "param2")
    .redirectErrorStream(true);
final Process p = builder.start();

final InputStream stdout = process.getInputStream();

// Purge stdout
while (stdout.read[devnull] != -1);

// Grab the process' exit code here


 类似资料:
  • 问题内容: 我目前正在使用HtmlUnit开发一些测试。它正在加载一个包含braintree.js(其表单加密库)的页面。我跑了一堆,但我被困在所谓的加密货币上。有问题的JS是: HtmlUnit抛出: 我想HtmlUnit不包含加密。我自己可以包括一个密码库吗? 问题答案: 根据您的评论,我不得不告诉您HtmlUnit在涉及JavaScript时令人不安。它将抱怨很多关于变量未定义和未知函数等问

  • 我最近创建了一个库Jar文件,我在我的Android项目中导入了该文件。我可以调用函数和使用这个Jar文件中的类,但是Android Studio一直告诉我它不能“解析”我正在使用的类的符号。请看下面的截图: 点击这里查看全尺寸图像 代码生成并成功执行。函数只返回,而这正是的设置。 我试着按下按钮,并使用Android Studio的菜单中的选项,但这些都没有解决问题。如何使Android Stu

  • 问题内容: 我正在使用Play编写一个部署在Tomcat中的webapp。因为该应用程序不会处理大量数据,所以我在Hibernate中使用默认的H2数据库。当我想部署新版本的应用程序时,我关闭了tomcat,擦除了旧的webapp和WAR,添加了新的WAR,然后开始备份。 直到几天前,当我添加数据库组件时,它一直有效。现在,我经常无法重新部署该应用程序。当我删除旧目录时,它将使用以下结构自动重新生

  • 问题内容: 我想要一个JFrame,在左右两侧有一个边框,边框为黑色,宽度为withfOfJFrame / 10。 现在,我的尝试如下所示: 这会在左右两侧添加一个黑色边框,但是该边框具有固定的大小,并且在调整窗口大小时不会重新计算。大小甚至不是800(JFrame的开始宽度)的1/10。 我究竟做错了什么?还是有更好的方法来做到这一点? 问题答案: 您可以使用和适当的权重来获得所需的结果:

  • 问题内容: 我正在尝试设置控制器,但是很遗憾无法查看输出…一切都正确呈现。当我转到404页面时。从Netbeans运行我的应用程序转到 app-config.xml web.xml 我如何调试它,看看有什么用,什么没用? 更新资料 Netbeans中的GlassFish服务器日志显示 问题答案: 您的名字映射到中吗?从您先前的问题中,我看到: 网址不匹配格式。尝试一种可能的解决方法。

  • 问题内容: 我有此数据: 当我运行此代码时: 因为我得到: 这就是我想要的。 但是如果我用1而不是0 按元组中的第二个数字分组,我只会得到: 即使还有其他元组在该1(第二个)位置具有“ 1”。 问题答案: itertools.groupby使用相同的密钥将 连续的 项目收集在一起。如果希望所有项目都使用相同的键,则必须先进行排序。