php exec()和java发送参数

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

PHP:

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

Java的:

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

结果是

 Array ( ) 

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

因为

  • 您的PHP env可能没有在路径中定义的java可执行文件(它也不应该)
  • jar文件使用java -jar执行
  • 你想要2>&1能够在输出中看到错误消息(从stderr重定向到stdout)

你的java程序期望至少有一个参数,但php代码没有给它,所以改变你的

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

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

编辑:

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

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

如果您真的想将本机Java代码集成到PHP应用程序中,那么PHP / Java Bridge可能能够以更好的方式解决这个问题,而不必通过exec() – java代码。

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