【问题标题】:$PATH variable isn't inherited through getRuntime().exec$PATH 变量不是通过 getRuntime().exec 继承的
【发布时间】:2011-08-08 15:02:45
【问题描述】:

我正在尝试通过 Java 中的以下命令启动脚本:

proc = Runtime.getRuntime().exec(cmd, null, fwrkDir);

在控制台中输入的命令可以完美运行。但是在这里它似乎没有找到脚本,即使它的路径被添加到 $PATH 变量中。如果 null 作为 Environment 传递,Java 不会自动继承所有这些变量吗?

【问题讨论】:

    标签: java variables path runtime.exec


    【解决方案1】:
    proc = Runtime.getRuntime().exec(cmd, null, fwrkDir);
    

    应该是

    proc = Runtime.getRuntime().exec(cmd, "PATH=$PATH:/android-sdk-linux_x86/platform-tools", fwrkDir);
    

    【讨论】:

      【解决方案2】:

      请注意,示例中 exec() 调用的第二个参数为 null。第二个参数是您为正在执行的命令设置环境的位置。如果您使用的是 Java 6,请考虑使用 ProcessBuilder

      【讨论】:

      • 是的,并且在 API 中说,如果在此处将 null 作为参数给出,则传递标准值...我不知道如何使用 ProcessBuilder,但感谢您提出建议.
      【解决方案3】:

      自己找到了解决方案。我不得不通过添加

      来更改 /etc/profile 中的 $PATH 变量,而不是更改 .bashsrc 中的 $PATH 变量
      PATH=$PATH:/android-sdk-linux_x86/platform-tools
      

      有谁知道为什么Java需要全局改变路径?不过,感谢您的回答!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 2012-07-26
        • 2020-06-06
        • 2017-03-03
        • 2016-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多