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。