【问题标题】:Executing java from CLI via exec() under Windows在 Windows 下通过 exec() 从 CLI 执行 java
【发布时间】:2012-03-30 08:44:42
【问题描述】:

我有一个最初在 Ubuntu 上开发的 PHP 脚本,现在它必须在 Windows 机器上运行,执行如下 java 程序:

exec("java -jar {$filename}");
// Process output

这在 Windows 上无法正常工作。我已经发现,虽然我可以在命令提示符下使用java -version,但我不能在exec() 中使用它,即问题是找不到java。

我有一个解决方法,如果脚本在 Windows 上运行,则使用 C:\Program Files\Java\...\java.exe 的完整路径指向 java.exe。不幸的是,尽管这被硬编码到当前机器上的路径,这可能会在不同的系统上改变或变化,例如将 Java 安装到不同位置或安装不同版本 (JRE/JDK/6/7) 时。

如何在 Windows 上调用 Java 而无需参考 java.exe 的确切位置?

【问题讨论】:

    标签: php exec command-line-interface


    【解决方案1】:

    你需要在windows上设置环境变量,才能在没有路径的情况下访问java

    http://www.java.com/en/download/help/path.xml

    【讨论】:

    • 我知道,而且我知道。在 Windows 命令提示符下,它可以在任何目录下运行,但使用 PHP 脚本时它无法运行。
    • 愚蠢的我。它是 PATH 环境变量。如前所述,我可以在命令提示符下调用 java 并且它仍然有效。我检查了我的 PATH,它被设置为错误的目录(可能是旧版本)。
    【解决方案2】:

    即使这个问题有点老,我也遇到了同样的问题,我找到了一个非常简洁的解决方案,不需要 PATH。

    此文件夹中的所有 java 可执行文件都有一个符号链接:

    C:\ProgramData\Oracle\Java\javapath
    

    例如:只需调用

    C:\ProgramData\Oracle\Java\javapath\java.exe -jar XYZ.jar
    

    【讨论】:

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