在网上找了一个用java写的计算词语相似度的程序,但是想在PHP中去调用它,所以这两天就研究了一下在PHP中调用java类的方法。 我的整个配置环境如下:
OS:win7 apache:2.2 PHP:5.2 JDK:1.6 PHP-java-bridge和java.inc: 5.5.2
下载地址:http://sourceforge.net/projects/PHP-java-bridge/files/
PHP-java-bridge的配置过程如下:
将下载的JavaBridge.jar放到PHP的ext目录下,同时双击运行,并且根据选择的端口号相应修改java.inc中的#define ("JAVA_HOSTS","127.0.0.1:8787")为define ("JAVA_HOSTS","127.0.0.1:选择的端口号"),注意去掉前面的#号。
编写自己的Java类,实现PHP调用自定义的Java类:
首先编写java类源文件,命名为Test.java,源码如下:
/**
* PHP中调用java类的方法
*
* @param
* @arrange 512-笔记网: www.512Pic.com
**/
public class Test
{
private String name = "";
//setter and getter
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
//加法
public float add(float num1,float num2)
{
return num1 + num2;
}
}
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
编写完类,将Test.java编译生成class文件,通过JavaBridge来调用我们需要打成jar包,在cmd下执行:jar cf Test.jar Test.class命令打包生成Test.jar包。将生成的jar包拷贝到apache的web应用根目录之下,我这里放到PHPjava目录,同时将java.inc也拷到该目录下。接下来我们就可以在PHP中调用了,编写test.PHP文件放入PHPjava目录,代码如下:
PHP代码:
/**
* PHP中调用java类的方法
*
* @param
* @arrange 512-笔记网: www.512Pic.com
**/
<?PHP
require_once("Java.inc"); //必须包含的配置文件
java_require("Test.jar"); //引用包含的jar包
$test = new Java("Test"); //产生实例
$test->setName("哈哈,PHP调用JAVA的方法!"); //后面的调用就跟在PHP中调用类方法一样
echo "调用类Test的getName方法,返回值为:".$test->getName()."<br>";
echo "调用Test的add方法,返回值为:".$test->add(11.2,15.7);
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
运行输出结果为:调用类Test的getName方法,返回值为:哈哈,PHP调用JAVA的方法! 调用Test的add方法,返回值为:26.9注意问题:
1.比较高版本的JavaBridge.jar不支持java_require()方法,不知道什么原因,所以我用了低一点的版本;
2.apache的版本也是一个问题,有的版本的apache使得输出结果为Object id #XX;
3.运行时必须打开JavaBridge.jar;
4.PHP输出时有时中文会是乱码,这时将PHP程序文件保存为utf-8格式,同时令网页中的charset=UTF-8即可。