有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java CommonExec:在系统路径上执行程序?

我正在尝试执行一个程序(具体来说,是从ImageMagick转换而来),其父文件夹位于路径上。因此,当我从命令行运行convert时,它会运行命令。然而,以下几点却失败了:

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

如果我指定convert可执行文件(C:\Program files\...)的完整路径,那么这段代码可以工作。如果我不这样做,就会抛出一个异常,其退出值为4

如何让commons exec识别系统路径


共 (1) 个答案

  1. # 1 楼答案

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

    EnvironmentUtils.getProcEnvironment();
    

    这将为您提供一个映射,您可以查看Java是否可以看到path变量。如果它不在那里,那么下一步就是找出为什么你看不到它

    如果它在那里,我会试着运行你的excutor。按如下方式执行命令:

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