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

Ste*_*all 5 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);
Run Code Online (Sandbox Code Playgroud)

如果我指定convert executable(C:\Program files\...)的完整路径,则此代码有效.如果我不这样做,我会抛出一个带退出值的异常4.

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

Pat*_*iel 7

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

EnvironmentUtils.getProcEnvironment();
Run Code Online (Sandbox Code Playgroud)

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

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

int exitValue = executor.execute(commandLine, EnvironmentUtils.getProcEnvironment());
Run Code Online (Sandbox Code Playgroud)