1. PHP調用JAVA方法
1.1. 軟件需求
- 下載php-java-bridge_6.2.1_documentation.zip,下載地址為: http://php-java-bridge.sourceforge.net/pjb/download.php
- JavaBridge.jar:將上面的php-java-bridge_6.2.1_documentation.zip解壓得到一個JavaBridge.war,將JavaBridge.war重命名為JavaBridge.jar,再次用WinRAR對JavaBridge.jar解壓到JavaBridge目錄,在JavaBridge\WEB-INF\LIB里面可以找到JavaBridge.jar和Lucene.jar。
- JDK:JavaBridge是由Java語言實現的,所以必須安裝JDK實現對jar文件執行提供支持。並配好環境變量。
1.2. 運行JavaBridge
- 雙擊運行JavaBridge\WEB-INF\LIB里的JavaBridge.jar,應該會彈出一個可以選擇的對話框,如果沒有彈出,是因為沒有安裝JDK或者文件關聯錯誤,解決方法是安裝JDK或者運行“start javaw -jar JavaBridge.jar”(內容保存到*.bat里面,而*.bat與JavaBridge.jar同一個目錄)替代雙擊。彈出對話框后不用選擇,直接點擊“確定”即可。正確如下:
1.3. 測試JavaBridge
- 在www目錄下新建test.php,內容如下:
require_once("java/Java.inc"); $system = new Java('java.lang.System'); $s = new Java("java.lang.String", "php-java-bridge config...<br><br>"); echo $s; print 'Java version='.$system->getProperty('java.version').' <br>'; print 'Java vendor=' .$system->getProperty('java.vendor').' <br>'; print 'OS='.$system->getProperty('os.name').' '. $system->getProperty('os.version').' on '. $system->getProperty('os.arch').' <br>'; $formatter = new Java('java.text.SimpleDateFormat', "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz"); print $formatter->format(new Java('java.util.Date')).' <br>'.' <br>';
- 找到JavaBridge\WEB-INF\LIB里的JavaBridge.jar,解壓JavaBridge.jar可以在JavaBridge\META-INF里面找到java目錄,完全拷貝java目錄與test.php同目錄,然后運行:http://localhost/test.php,會有如下內容輸出,說明JavaBridge安裝成功了
1.4. 在PHP中調用自定義的JAVA 類
- 先建一個測試類Test.java:
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; } }
- 編寫完類,將Test.java編譯生成class文件,將Test.class拷貝到C:\Program Files\Java\jre7\classes目錄下,因為版本號的不同,jre7文件夾名字可能不同。安裝JDK時候默認沒有C:\Program Files\Java\jre7\classes,需要手動建立。
- 修改Test.php的內容為:
//自定義類測試 require_once("java/Java.inc"); $test = new Java("Test"); //產生實例 $test->setName("哈哈,PHP調用JAVA的方法!"); //后面的調用就跟在php中調用類方法一樣 print "調用類Test的getName方法,返回值為:".$test->getName()."<br>"; print "調用Test的add方法,返回值為:".$test->add(11.2, 15.7);
- 再訪問http://localhost/test.php,頁面就輸出下面內容了:
- 就這個東東搞了一天才搞出來,哎 網上找了好多方法都行不通,這樣每次都要把class移到jre目錄里不方便,加上java_require("Test.jar"); 引用jar包卻報這個錯: Warning: java_require() not supported anymore. Please use <a href="http://php-java-bridge.sourceforge.net/pjb/webapp.php>tomcat or jee hot deployment</a> instead in D:\wamp\www\java\Java.inc on line 1656 不知道怎么搞才能直接引用jar包,有會的同學還請指教哦!