php呼叫自己java程式的方法及實例詳解
這篇文章主要介紹了php調用自己java程式的方法,較為詳細的分析了php基於第三方jar包調用java程式以及使用dll動態鏈接庫文件擴展進行java調用兩種方法,需要的朋友可以參考下
具體如下:
最開始要裝jdk這個就不用說了,我裝的是java ee 5 jdk
1.把下載的 php-java-bridge_5.2.2_j2ee.zip解壓縮出來,裡面有個JavaBridge.war 直接用winrar打開,到WEB-INF/lib/JavaBridge.jar 把這個jar包拷到你的php目錄的ext/下。
2.打開war包,裡面有個java的資料夾,把他全部拷到你的PHP專案下,如/demo/java
3.目前的版本是VMBridge了,要php呼叫java類,要先啟動JavaBridge,
命令列下呼叫java –jar JavaBridge.jar或雙擊JavaBridge.jar,在彈出的視窗中選擇監聽埠8080
#為了以後啟動方便,我在ext/下新建了一個bat檔內容如下:
@echo off start javaw -jar JavaBridge.jar
<?php require_once("java/Java.inc"); header("content-type:text/html; charset=utf-8″); // get instance of Java class java.lang.System in PHP $system = new Java('java.lang.System'); $s = new Java("java.lang.String", "php-java-bridge config…<br><br>"); echo $s; // demonstrate property access 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>'; // java.util.Date example $formatter = new Java('java.text.SimpleDateFormat', "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz"); print $formatter->format(new Java('java.util.Date')); ?>
##5.啟動apache ,在瀏覽器中查看http://localhost/demo/test.php
會看到以下資訊:
程式碼如下:php-java-bridge config…
Java version=1.6.0_10Java vendor=Sun Microsystems Inc.
OS=Windows Vista 6.0 on x86
星期日, 十一月23 , 2008 at 4:31:49 下午中國標淮時間
自訂JAR:
package ttt; public class phptest{ /** * A sample of a class that can work with PHP * NB: The whole class must be public to work, * and of course the methods you wish to call * directly. * * Also note that from PHP the main method * will not be called */ public String foo; /** * Takes a string and returns the result * or a msg saying your string was empty */ public String test(String str) { if(str.equals("")) { str = "Your string was empty. "; } return str; } /** * whatisfoo() simply returns the value of the variable foo. */ public String whatisfoo() { return "foo is " + foo; } /** * This is called if phptest is run from the command line with * something like * java phptest * or * java phptest hello there */ public static void main(String args[]) { phptest p = new phptest(); if(args.length == 0) { String arg = ""; System.out.println(p.test(arg)); }else{ for (int i = 0; i < args.length; i++) { String arg = args[i]; System.out.println(p.test(arg)); } } } }
<? require_once("java/Java.inc"); java_require("D://1.jar"); $myj = new Java("ttt.phptest"); echo "Test Results are <b>" . $myj->test("Hello World") . "</b>"; $myj->foo = "A String Value"; echo "You have set foo to <b>" . $myj->foo . "</b><br>\n"; echo "My java method reports: <b>" . $myj->whatisfoo() . "</b><br>\n"; ?>
##方法二:php_java.dll 需要設定php.ini,新版的php-java-bridge都沒有dll檔
先確定你的PHP和Apache伺服器及JDK( or JRE也可)都已安裝完成
上網下載php-java-bridge(自行找戴點or http://sourceforge.net/project/showfiles.php?group_id=117793 )將下載回來的php-java-bridge解壓縮,解壓縮後資料夾裡會有一個JavaBridge.war,再同樣將這個JavaBridge.war解壓縮(win rar即可解)解壓縮後可從WEB -INF資料夾裡的cgi資料夾找到java-x86-windows.dll,及WEB-INF資料夾裡的lib資料夾找到JavaBridge.jar
將java-x86-windows.dll和JavaBridge. jar 複製到PHP的外掛文件夾(我這邊是C:/AppServphp/ext),並將java-x86-windows.dll改成php_java.dll
#修改php.ini檔案
如果php.ini原本沒有以下內容,請自行加上,如果原本就有以下內容,請修改成如下[我使用的是JDK]
extension =php_java.dll
[Java] ;java.java = "C:\jdk1.6.0_13\bin\java" java.class.path = "D:\php\ext\JavaBridge.jar;c:\myclasses" c:\myclasses可自定义,用来存放自己写的JAVA文件 java.java_home = "C:\jdk1.6.0_13\jre" java.library = "d:\jdk1.2.2\jre\bin\server\jvm.dll" java.library.path = "D:\php\ext"
java java support Enabled java bridge 3.0.8 java.java_home C:\jdk1.6.0_13 java.java C:\jdk1.6.0_13\bin\java java.log_file <stderr> java.log_level no value (use backend's default level) java.ext_java_compatibility Off java command C:\jdk1.6.0_13\bin\java -Djava.library.path=D:\php\ext -Djava.class.path=D:\php\ext/JavaBridge.jar -Djava.awt.headless=true php.java.bridge.JavaBridge INET_LOCAL:0 2 java status running java server 9267
#看倒數第二個java status的狀態是不是not running (這是因為你沒有啟動JavaBridge.jar)。如果變成running <—-代表JavaBridge.jar已啟動,已可正式使用php-java-bridge
如果沒有啟動則執行:
因為不可能每次開機都手動去啟動JavaBridge.jar
所以我們寫一個批次,內容如下
#@echo off start javaw -jar JavaBridge.jar
把它存成phpJavaBridge.bat,同樣放在PHP的外掛資料夾裡(這裡是C:AppServ/php/ext)
把該檔建立捷徑,把建立好的捷徑放到啟動裡(這裡是C:/Documents and Settings/All Users /「開始」/功能表/程式啟動)
這樣一來,以後每次開機後就會自動啟動C:AppServphpext 資料夾裡的phpJavaBridge.bat
簡單範例
<? $system=new Java('java.lang.System'); echo "java版本".$system->getProperty('java.version')."<BR>"; echo "发行厂商".$system->getProperty('java.vendor')."<BR>"; echo "作业系统版本".$system->getProperty('os.name')."<BR>"; echo "java版本".$system->getProperty('os.version')."<BR>"; echo "java版本".$system->getProperty('os.arch')."<BR>"; ?>
或在php-java-bridge找到test.php,http://localhost/test.php查看效果
<?php $system=new Java("java.lang.System"); print "Java version=".$system->getProperty("java.version")." <br>"; ?>
[java] extension=PHP_java.dll java.library.path=c:webPHP4extensions java.class.path="c:webPHP4extensionsjdk1.2.2PHP_java.jar;c:myclasses"
在PHP.INI中加入extension=PHP_java.dll,並在[java]中,設定好java.class.path ,讓它指向PHP_java.jar,如果你使用新的JAVA類,你也應該存入這個路徑,在這篇例子中,我們使用c:myclasses這個目錄。
測試環境,建立如下PHP檔案:
<?php $system = new Java("java.lang.System"); print "Java version=".$system->getProperty("java.version")." <br>n"; print "Java vendor=".$system->getProperty("java.vendor")." <p>nn"; print "OS=".$system->getProperty("os.name")." ". $system->getProperty("os.version")." on ". $system->getProperty("os.arch")." <br>n"; $formatter = new Java("java.text.SimpleDateFormat","EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz"); print $formatter->format(new Java("java.util.Date"))."n"; ?>
如果你正確安裝了,你將會看到以下資訊:
複製程式碼
程式碼如下:
Java version=1.2.2Java vendor=Sun Microsystems Inc.OS=Windows 95 4.10 on x86
Wednesday, October 18, 2000 at 10:22:45 AM China Standard Time
理解如何調用JAVA很重要,下一步我們就要創建自己的JAVA文件,讓PHP來調用,JAVA文件的java.class.path很重要
注意大小寫
]创建你自己的 JAVA 类非常容易。新建一个 phptest.java 文件,将它放置在你的 java.class.path 目录下【 c:\myclasses】,文件内容如下: 创建这个文件后,我们要编译好这个文件,在 DOS 命令行使用 javac phptest.java 这个命令。 为了使用 PHP 测试这个 JAVA 类,我们在web目录下创建一个 phptest.php 文件,内容如下: 如果你得到这样的警告信息:java.lang.ClassNotFoundException error ,这就意味着你的 phptest.class 文件不在你的 java.class.path 目录下。 注意的是 JAVA 是一种强制类型语言,而 PHP 不是,这样我们在将它们融合时,容易导致错误,于是我们在向JAVA传递变量时,要正确指定好变量的类型。如:$myj->foo = (string) 12345678; or $myj->foo = "12345678″; 这只是一个很小的例子,你可以创建你自己的 JAVA 类,并使用 PHP 很好的调用它!关键在于理解java.class.path目录的重要性。 总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。 相关推荐: PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】 以上是php呼叫自己java程式的方法及實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!public class phptest{
/**
* A sample of a class that can work with PHP
* NB: The whole class must be public to work,
* and of course the methods you wish to call
* directly.
*
* Also note that from PHP the main method
* will not be called
*/
public String foo;
/**
* Takes a string and returns the result
* or a msg saying your string was empty
*/
public String test(String str) {
if(str.equals("")) {
str = "Your string was empty. ";
}
return str;
}
/**
* whatisfoo() simply returns the value of the variable foo.
*/
public String whatisfoo() {
return "foo is " + foo;
}
/**
* This is called if phptest is run from the command line with
* something like
* java phptest
* or
* java phptest hello there
*/
public static void main(String args[]) {
phptest p = new phptest();
if(args.length == 0) {
String arg = "";
System.out.println(p.test(arg));
}else{
for (int i = 0; i < args.length; i++) {
String arg = args[i];
System.out.println(p.test(arg));
}
}
}
}
<?php
$myj = new Java("phptest");
echo "Test Results are <b>" . $myj->test("Hello World") . "</b>";
$myj->foo = "A String Value";
echo "You have set foo to <b>" . $myj->foo . "</b><br>\n";
echo "My java method reports: <b>" . $myj->whatisfoo() . "</b><br>\n";
?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

PHP是一種服務器端腳本語言,用於動態網頁開發和服務器端應用程序。 1.PHP是一種解釋型語言,無需編譯,適合快速開發。 2.PHP代碼嵌入HTML中,易於網頁開發。 3.PHP處理服務器端邏輯,生成HTML輸出,支持用戶交互和數據處理。 4.PHP可與數據庫交互,處理表單提交,執行服務器端任務。

IIS和PHP可以兼容,通過FastCGI實現。 1.IIS通過配置文件將.php文件請求轉發給FastCGI模塊。 2.FastCGI模塊啟動PHP進程處理請求,提高性能和穩定性。 3.實際應用中需注意配置細節、錯誤調試和性能優化。
