php中調用java類的方法

來源:互聯網
上載者:User

在網上找了一個用java寫的計算詞語相似性的程式,但是想在php中去調用它,所以這兩天就研究了一下在php中調用java類的方法。這裡要感謝http://blog.sina.com.cn/s/blog_51a5e5f40100cxie.html這篇文章的作者,我主要是借鑒這篇文章去做的,期間也遇到了很多問題,最後在師弟kevin的協助得以解決,真的非常感謝他。廢話少說,進入正題。

我的整個配置環境如下:

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,源碼如下:
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檔案,通過JavaBridge來調用我們需要打成jar包,在cmd下執行:jar cf Test.jar Test.class命令打包產生Test.jar包。將產生的jar包拷貝到apache的web應用根目錄之下,我這裡放到phpjava目錄,同時將java.inc也拷到該目錄下。接下來我們就可以在PHP中調用了,編寫test.php檔案放入phpjava目錄,代碼如下: 

PHP代碼:
<?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);
?>
運行輸出結果為:調用類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即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.