【问题标题】:commons-exec: Executing a program on the system PATH?commons-exec:在系统 PATH 上执行程序?
【发布时间】:2011-02-11 04:33:30
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    EnvironmentUtils.getProcEnvironment();
    

    这会给你一个地图,你可以看看Java是否可以看到路径变量。如果它不存在,那么下一步就是找出你看不到它的原因。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多