我正在尝试执行一个程序(从ImageMagick转换为具体的),其父文件夹存在于路径上。因此,当我从命令行运行convert
时,它会运行命令。但是,以下内容失败了:
String command = "convert"
CommandLine commandLine = CommandLine.parse(command);
commandLine.addArgument(...)
...
int exitValue = executor.execute(commandLine);
如果我指定转换可执行文件的完整路径(C:\Program files\...
),则此代码有效。如果我不这样做,我会抛出退出值为4
的异常。
如何让commons-exec识别系统路径?
答案 0 :(得分:7)
在系统设置PATH不是java进程看到的之前,我遇到过这样的问题。作为一种调试方法,您可以使用以下命令打印出java进程看到的路径env变量:
EnvironmentUtils.getProcEnvironment();
这将为您提供一个地图,您可以查看Java是否可以看到路径变量。如果不存在,那么下一步就是弄清楚为什么你看不到它。
如果它在那里,我会尝试运行你的excutor.execute命令,如下所示:
int exitValue = executor.execute(commandLine, EnvironmentUtils.getProcEnvironment());