commons-exec:在系统PATH上执行程序?

时间:2010-04-22 17:24:24

标签: java path environment-variables system-calls apache-commons-exec

我正在尝试执行一个程序(从ImageMagick转换为具体的),其父文件夹存在于路径上。因此,当我从命令行运行convert时,它会运行命令。但是,以下内容失败了:

String command = "convert"
CommandLine commandLine = CommandLine.parse(command);
commandLine.addArgument(...)
...
int exitValue = executor.execute(commandLine);

如果我指定转换可执行文件的完整路径(C:\Program files\...),则此代码有效。如果我不这样做,我会抛出退出值为4的异常。

如何让commons-exec识别系统路径?

1 个答案:

答案 0 :(得分:7)

在系统设置PATH不是java进程看到的之前,我遇到过这样的问题。作为一种调试方法,您可以使用以下命令打印出java进程看到的路径env变量:

EnvironmentUtils.getProcEnvironment();

这将为您提供一个地图,您可以查看Java是否可以看到路径变量。如果不存在,那么下一步就是弄清楚为什么你看不到它。

如果它在那里,我会尝试运行你的excutor.execute命令,如下所示:

int exitValue = executor.execute(commandLine, EnvironmentUtils.getProcEnvironment());