Exec程序不包含在Java的路径中

时间:2016-09-10 08:45:35

标签: java apache-commons

我想执行一个未包含在环境路径中的程序。 所以,我把包含我的程序的目录放在我的变量路径中。 我使用Java和Apache公共:

DefaultExecutor executor = new DefaultExecutor();
executor.setWorkingDirectory(dir);
Map<String, String> environment = EnvironmentUtils.getProcEnvironment();
environment.put("PATH", environment.get("PATH") + ":/path/of/my/program");
int exitValue = executor.execute(cmdLine, environment);

但它不起作用:无法运行程序...错误= 2,没有这样的文件或导演。

当我之前执行一个printenv时,我的PATH变量很好,当我用绝对路径执行我的程序时,它工作正常。

有人有想法吗?

2 个答案:

答案 0 :(得分:0)

我有两种可能的解决方案:

  1. 您说您要将“/ path / of / my / program”添加到“PATH”变量中。但是如果“/ path / of / my / program”是程序的完整路径名,那么你应该将“/ path / of / my”添加到“PATH”。 “PATH”变量是要搜索的目录的列表。

  2. 如果您知道要执行的命令的完整路径名,则不需要 将其添加到“PATH”。您可以在命令行中使用它; e.g。

      String cmdLine = "/path/of/my/program arg1 arg2";
      int exitValue = executor.execute(cmdLine, environment);
    

答案 1 :(得分:-1)

你可以试试这个:

environment.put("PATH", "\"" + environment.get("PATH") + ":/path/of/my/program" + "\"");

因为Windows上的路径有“chracter