1

我想通过 php 连接到 java 并在 php 中打印结果。现在我想向java发送一个参数并将其返回给php以查看它是如何工作的。我怎样才能做到这一点?到目前为止我有这个代码:

PHP:

exec("java jar/name.jar", $output);
print_r($output);

爪哇:

public class Main {
    public static void main(String[] args) {
        System.out.print(args[0]);
    }
}

结果是

Array ( )
4

4 回答 4

10

exec("/full/path/to/java -jar jar/name.jar 2>&1", $output);
print_r($output);

因为

  • 您的 PHP 环境可能没有在路径中定义 java 可执行文件(也不应该)
  • jar 文件执行与java -jar
  • 您将希望2>&1能够在输出中看到错误消息(从 stderr 重定向到 stdout)
于 2012-12-16T16:31:34.013 回答
1

您的 java 程序需要至少一个参数,但 php 代码没有给出它,所以更改您的

exec('java jar/name.jar', $output);

exec('java jar/name.jar some_value', $output);

编辑:

没有指定参数时得到 Array ( ) 的原因可能是因为 java 发送的错误是发送到 stderr 的,而 $output 只从 stdout 获取数据

于 2012-12-16T15:02:42.583 回答
0

考虑使用 RESTful 设计。将 Java 程序放在一个 URL 并使用 PHP *file_get_contents()* 从 URL 读取。Java 程序写入浏览器输出流的任何内容都将在该函数加载的 PHP 变量中可见。

于 2012-12-16T15:01:19.707 回答
0

如果您真的想将原生 Java 代码集成到您的 PHP 应用程序中,那么PHP/Java 桥可能能够以比通过 exec()-ing java 代码更好的方式解决这个问题。

然而,为您的 Java 功能创建一个小型服务是首选方式,然后通过基于 Web 的小型 API(最好使用 JSON 作为交换格式)公开这些功能。

于 2012-12-16T15:05:18.100 回答