php調java接口


1、下載二進制的 JavaBridge.jar包、java/Java.inc庫文件,下載地址:http://php-java-bridge.sourceforge.net/pjb/download.php或者從http://php-java-bridge.sourceforge.net/pjb/index.php下載php-java-bridge_6.2.1的war包,將其中的將war包放在tomcat的應用程序目錄webapps下,啟動tomcat,會自動解析出一個同名的文件夾,其中的JavaBridge.jar和Java.inc是需要用到的。

2.下載jdk包(360軟件管家)

3.在JavaBridge.jar所在目錄運行命令(先cd到所在目錄)

java -jar JavaBridge.jar SERVLET_LOCAL:8081 &

4.在命令行輸入netstat -ano,發現已經開啟了一個8081端口開始監聽:

5.在web目錄下放置 Java.inc文件,編寫php測試代碼 test.php,首先測試php調用java預定義的系統類有沒有問題

<?php
define("JAVA_HOSTS", "127.0.0.1:8081");

require_once "Java.inc"; //php調用java的接口,與該腳本位於同一目錄
java_set_file_encoding("UTF-8"); //設置JAVA編碼。

$props = java("java.lang.System")->getProperties();

$array = java_values($props);
var_dump($array);

6,測試自定義java包

(1)編寫test.java

 1 public class Test
 2 {
 3     private String name = "";
 4 
 5     //setter and getter
 6     public void setName(String name)
 7     {
 8         this.name = name;
 9     }
10 
11     public String getName()
12     {
13         return this.name;
14     }
15 
16     //加法
17     public float add(float num1, float num2)
18     {
19         return num1 + num2;
20     }
21 }

(2)在命令行輸入javac test.java編譯java文件

(3)打包成jar包,jar cvf classes.jar Foo.class Bar.class(將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中)放入java安裝目錄F:\javaSetup\jre8\lib\ext下,看看能不能實例化成功

1 $test=new Java("Test");
2 $test->setName("哈哈,PHP調用JAVA的方法!");
3 echo "調用類Test的getName方法,返回值為:".$test->getName()."<br>";
4 echo "調用Test的add方法,返回值為:".$test->add(11.2, 15.7)."<br>";

7.提交數據給java的jar包

<?php
$jarPath = 'E:\test\report\test\test.jar';
$data = json_encode([
'cinema_status' => 1,
'business_date' => '2017-10-16',
'screen_code' => '00000008',
'film_code' => '001106152017',
'session_code' => '0000000027975',
'session_datetime' => '2017-10-16T14:30:00',
'operation' => 1,
'code' => '355170924665654',
'seat_code' => '0000000126',
'price' => '100.00',
'service'=> '10.00',
'online_sale' => 1
]);
$send = "export LANG='en_US.UTF-8';java -jar {$jarPath} {$data}";
echo $send.'<br />';
exec($send,$out,$status);
var_dump([$out,$status]);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM