国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
php調(diào)用自己java程序的方法詳解,php調(diào)用java詳解
首頁(yè) 後端開(kāi)發(fā) php教程 php調(diào)用自己java程序的方法詳解,php調(diào)用java詳解_PHP教程

php調(diào)用自己java程序的方法詳解,php調(diào)用java詳解_PHP教程

Jul 12, 2016 am 08:51 AM
java php 呼叫

php調(diào)用自己java程序的方法詳解,php調(diào)用java詳解

本文實(shí)例講述了php調(diào)用自己的java程序?qū)崿F(xiàn)方法。分享給大家供大家參考,具體如下:

最開(kāi)始要裝jdk這個(gè)就不用說(shuō)了,我裝的是java ee 5+jdk

1.把下載的php-java-bridge_5.2.2_j2ee.zip解壓出來(lái),里面有個(gè)JavaBridge.war 直接用winrar打開(kāi),到WEB-INF/lib/JavaBridge.jar 把這個(gè)jar包拷到 你的php目錄的ext/下。

2.打開(kāi)war包,里面有個(gè)java的文件夾,把他全部拷到你的PHP項(xiàng)目下,如/demo/java

3.目前的版本是VMBridge了,要php調(diào)用java類(lèi),要先啟動(dòng)JavaBridge,

命令行下調(diào)用java –jar JavaBridge.jar或者雙擊JavaBridge.jar,在彈出的窗口中選擇監(jiān)聽(tīng)端口8080

為了以后啟動(dòng)方便,我在ext/下新建了一個(gè)bat文件內(nèi)容如下:

@echo off
start javaw -jar JavaBridge.jar

保存后,雙擊啟動(dòng) 會(huì)有一個(gè)提示框選擇vmbridge port 默認(rèn)8080,直接點(diǎn)ok就行了

4.在/demo/下新建test.php內(nèi)容如下:

<&#63;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'));
&#63;>

5.啟動(dòng)apache,在瀏覽器中查看 http://localhost/demo/test.php

會(huì)看到如下信息:
復(fù)制代碼 代碼如下:php-java-bridge config…
Java version=1.6.0_10
Java vendor=Sun Microsystems Inc.
OS=Windows Vista 6.0 on x86
星期日, 十一月 23, 2008 at 4:31:49 下午 中國(guó)標(biāo)淮時(shí)間

自定義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));
   }
  }
 }
}

生成為JAR,拷貝到D盤(pán)下。

/demo/index2.php

<&#63;
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";
&#63;>

在瀏覽器中查看 http://localhost/demo/index2.php

方法二:php_java.dll 需要配置php.ini,新版的php-java-bridge都沒(méi)有dll文件

首先確定你的PHP和Apache伺服器及JDK(or JRE也可)都已安裝完成

上網(wǎng)下載php-java-bridge(自行找戴點(diǎn) or http://sourceforge.net/project/showfiles.php?group_id=117793 )

將下載回來(lái)的 php-java-bridge解壓縮,解壓后文件夾里會(huì)有一個(gè)JavaBridge.war,再同樣將這個(gè)JavaBridge.war解壓縮(win rar即可解)
解壓后可從 WEB-INF文件夾里的cgi文件夾找到j(luò)ava-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原本沒(méi)有以下內(nèi)容,請(qǐng)自行加上,如果原本就有以下內(nèi)容,請(qǐng)修改成如下[我使用的是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可自定義,用來(lái)存放自己寫(xiě)的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"

重新起動(dòng)Apache,查看phpinfo

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

看倒數(shù)第二項(xiàng) java status的狀態(tài)是不是not running (這是因?yàn)槟銢](méi)有啟動(dòng)JavaBridge.jar)。如果變成running <—-代表JavaBridge.jar已啟動(dòng),已可正式使用php-java-bridge

如果沒(méi)有啟動(dòng)則執(zhí)行:

因?yàn)椴豢赡苊看伍_(kāi)機(jī)都手動(dòng)去啟動(dòng)JavaBridge.jar

所以我們寫(xiě)一個(gè)批處理,內(nèi)容如下

@echo off
start javaw -jar JavaBridge.jar

把它存成phpJavaBridge.bat,同樣放在PHP的外掛文件夾里(這里是C:AppServ/php/ext)

把該檔建立捷徑,把建立好的捷徑放到啟動(dòng)里(這里是C:/Documents and Settings/All Users/「開(kāi)始」/功能表/程序啟動(dòng))

這樣一來(lái),以后每次開(kāi)機(jī)后就會(huì)自動(dòng)啟動(dòng)C:AppServphpext 文件夾里的phpJavaBridge.bat

簡(jiǎn)單范例

<&#63;
$system=new Java('java.lang.System');
echo "java版本".$system->getProperty('java.version')."<BR>";
echo "發(fā)行廠商".$system->getProperty('java.vendor')."<BR>";
echo "作業(yè)系統(tǒng)版本".$system->getProperty('os.name')."<BR>";
echo "java版本".$system->getProperty('os.version')."<BR>";
echo "java版本".$system->getProperty('os.arch')."<BR>";
&#63;>

或者在php-java-bridge中找到test.php,http://localhost/test.php查看效果

<&#63;php
$system=new Java("java.lang.System");
print "Java version=".$system->getProperty("java.version")." <br>";
&#63;>

[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]中,設(shè)定好java.class.path,讓它指向 PHP_java.jar,如果你使用新的JAVA類(lèi),你也應(yīng)該存入這個(gè)路徑,在這篇例子中,我們使用c:myclasses這個(gè)目錄。

測(cè)試環(huán)境,創(chuàng)建如下PHP文件:

<&#63;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";
&#63;> 

如果你正確安裝了,你將會(huì)看到以下信息:
復(fù)制代碼 代碼如下:Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows 95 4.10 on x86
Wednesday, October 18, 2000 at 10:22:45 AM China Standard Time

理解如何調(diào)用JAVA很重要,下一步我們就要?jiǎng)?chuàng)建自己的JAVA文件,讓PHP來(lái)調(diào)用,JAVA文件的java.class.path很重要

創(chuàng)建和使用你自己的JAVA類(lèi) [注意大小寫(xiě)]

創(chuàng)建你自己的 JAVA 類(lèi)非常容易。新建一個(gè) phptest.java 文件,將它放置在你的 java.class.path 目錄下【 c:\myclasses】,文件內(nèi)容如下:

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));
   }
  }
 }
}

創(chuàng)建這個(gè)文件后,我們要編譯好這個(gè)文件,在 DOS 命令行使用 javac phptest.java 這個(gè)命令。

為了使用 PHP 測(cè)試這個(gè) JAVA 類(lèi),我們?cè)趙eb目錄下創(chuàng)建一個(gè) phptest.php 文件,內(nèi)容如下:

<&#63;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";
&#63;>

如果你得到這樣的警告信息:java.lang.ClassNotFoundException error ,這就意味著你的 phptest.class 文件不在你的 java.class.path 目錄下。

注意的是 JAVA 是一種強(qiáng)制類(lèi)型語(yǔ)言,而 PHP 不是,這樣我們?cè)趯⑺鼈內(nèi)诤蠒r(shí),容易導(dǎo)致錯(cuò)誤,于是我們?cè)谙騄AVA傳遞變量時(shí),要正確指定好變量的類(lèi)型。如:$myj->foo = (string) 12345678; or $myj->foo = "12345678″;

這只是一個(gè)很小的例子,你可以創(chuàng)建你自己的 JAVA 類(lèi),并使用 PHP 很好的調(diào)用它!關(guān)鍵在于理解java.class.path目錄的重要性。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127921.htmlTechArticlephp調(diào)用自己java程序的方法詳解,php調(diào)用java詳解 本文實(shí)例講述了php調(diào)用自己的java程序?qū)崿F(xiàn)方法。分享給大家供大家參考,具體如下: 最開(kāi)...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時(shí)間,包括獲取當(dāng)前時(shí)間、測(cè)量執(zhí)行時(shí)間、操作時(shí)間點(diǎn)與持續(xù)時(shí)間及格式化解析時(shí)間。 1.獲取當(dāng)前時(shí)間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時(shí)鐘可能不單調(diào);2.測(cè)量執(zhí)行時(shí)間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過(guò)duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時(shí)間點(diǎn)(time_point)和持續(xù)時(shí)間(duration)可相互操作,但需注意單位兼容性和時(shí)鐘紀(jì)元(epoch)

Hashmap在Java內(nèi)部如何工作? Hashmap在Java內(nèi)部如何工作? Jul 15, 2025 am 03:10 AM

HashMap在Java中通過(guò)哈希表實(shí)現(xiàn)鍵值對(duì)存儲(chǔ),其核心在於快速定位數(shù)據(jù)位置。 1.首先使用鍵的hashCode()方法生成哈希值,並通過(guò)位運(yùn)算轉(zhuǎn)換為數(shù)組索引;2.不同對(duì)象可能產(chǎn)生相同哈希值,導(dǎo)致衝突,此時(shí)以鍊錶形式掛載節(jié)點(diǎn),JDK8後鍊錶過(guò)長(zhǎng)(默認(rèn)長(zhǎng)度8)則轉(zhuǎn)為紅黑樹(shù)提升效率;3.使用自定義類(lèi)作鍵時(shí)必須重寫(xiě)equals()和hashCode()方法;4.HashMap動(dòng)態(tài)擴(kuò)容,當(dāng)元素?cái)?shù)超過(guò)容量乘以負(fù)載因子(默認(rèn)0.75)時(shí),擴(kuò)容並重新哈希;5.HashMap非線程安全,多線程下應(yīng)使用Concu

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。 $ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

為什麼我們?cè)u(píng)論:PHP指南 為什麼我們?cè)u(píng)論:PHP指南 Jul 15, 2025 am 02:48 AM

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

如何使用SimpleDateFormat在Java中格式化日期? 如何使用SimpleDateFormat在Java中格式化日期? Jul 15, 2025 am 03:12 AM

創(chuàng)建並使用SimpleDateFormat需要傳入格式字符串,如newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");2.注意大小寫(xiě)敏感、避免混用單字母格式及YYYY和DD的誤用;3.SimpleDateFormat不是線程安全的,多線程環(huán)境下應(yīng)每次新建實(shí)例或使用ThreadLocal;4.使用parse方法解析字符串時(shí)需捕獲ParseException,並註意結(jié)果不帶時(shí)區(qū)信息;5.Java8及以上推薦使用DateTimeFormatter和Lo

PHP檢查字符串是否以特定的字符串開(kāi)頭 PHP檢查字符串是否以特定的字符串開(kāi)頭 Jul 14, 2025 am 02:44 AM

在PHP中判斷字符串是否以特定字符串開(kāi)頭可通過(guò)多種方法實(shí)現(xiàn):1.使用strncmp()比較前n個(gè)字符,若返回0則開(kāi)頭匹配,不區(qū)分大小寫(xiě);2.使用strpos()檢查子字符串位置是否為0,區(qū)分大小寫(xiě),可用stripos()替代實(shí)現(xiàn)不區(qū)分大小寫(xiě);3.可封裝startsWith()或str_starts_with()函數(shù)提高複用性;此外需注意空字符串默認(rèn)返回true、編碼兼容性及性能差異,strncmp()通常效率更高。

如何避免PHP中未定義的索引錯(cuò)誤 如何避免PHP中未定義的索引錯(cuò)誤 Jul 14, 2025 am 02:51 AM

避免“undefinedindex”錯(cuò)誤的關(guān)鍵方法有三:首先,使用isset()檢查數(shù)組鍵是否存在並確保值不為null,適用於大多數(shù)常規(guī)場(chǎng)景;其次,使用array_key_exists()僅判斷鍵是否存在,適用於需要區(qū)分鍵不存在和值為null的情況;最後,使用空合併運(yùn)算符??(PHP7 )簡(jiǎn)潔地設(shè)置默認(rèn)值,推薦用於現(xiàn)代PHP項(xiàng)目,同時(shí)注意表單字段名拼寫(xiě)、謹(jǐn)慎使用extract()及遍歷前檢查數(shù)組非空以進(jìn)一步規(guī)避風(fēng)險(xiǎn)。

php準(zhǔn)備的語(yǔ)句與條款 php準(zhǔn)備的語(yǔ)句與條款 Jul 14, 2025 am 02:56 AM

使用PHP預(yù)處理語(yǔ)句執(zhí)行帶有IN子句的查詢(xún)時(shí),1.需根據(jù)數(shù)組長(zhǎng)度動(dòng)態(tài)生成佔(zhàn)位符;2.使用PDO時(shí)可直接傳入數(shù)組,用array_values確保索引連續(xù);3.使用mysqli時(shí)需構(gòu)造類(lèi)型字符串並綁定參數(shù),注意展開(kāi)數(shù)組的方式及版本兼容性;4.避免拼接SQL、處理空數(shù)組和確保數(shù)據(jù)類(lèi)型匹配。具體做法是:先用implode與array_fill生成佔(zhàn)位符,再依擴(kuò)展特性綁定參數(shù),從而安全執(zhí)行IN查詢(xún)。

See all articles