PHPが独自のJavaプログラムを呼び出す方法と例の詳細な説明

墨辰丷
リリース: 2023-03-29 14:14:02
オリジナル
5954 人が閲覧しました

この記事では主に、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) にコピーします。PHP で Java クラスを呼び出す場合は、まず JavaBridge を起動し、

コマンド ラインから java –jar JavaBridge.jar を呼び出すか、JavaBridge.jar をダブルクリックして、ポップアップ ウィンドウでリスニング ポート 8080 を選択します

将来の起動の便宜のために、次の内容の新しいバット ファイルを ext/ の下に作成します:

@echo off
start javaw -jar JavaBridge.jar
ログイン後にコピー
ログイン後にコピー

保存後、ダブルクリックして開始します。vmbridge ポートのデフォルト 8080 を選択するプロンプト ボックスが表示されるので、[ok] をクリックするだけです

4。 /demo/ に次の内容の新しい test.php を追加します:

<?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(&#39;java.lang.System&#39;);
$s = new Java("java.lang.String", "php-java-bridge config…<br><br>");
echo $s;
// demonstrate property access
print &#39;Java version=&#39;.$system->getProperty(&#39;java.version&#39;).&#39; <br>&#39;;
print &#39;Java vendor=&#39; .$system->getProperty(&#39;java.vendor&#39;).&#39; <br>&#39;;
print &#39;OS=&#39;.$system->getProperty(&#39;os.name&#39;).&#39; &#39;.
$system->getProperty(&#39;os.version&#39;).&#39; on &#39;.
$system->getProperty(&#39;os.arch&#39;).&#39; <br>&#39;;
// java.util.Date example
$formatter = new Java(&#39;java.text.SimpleDateFormat&#39;,
"EEEE, MMMM dd, yyyy &#39;at&#39; h:mm:ss a zzzz");
print $formatter->format(new Java(&#39;java.util.Date&#39;));
?>
ログイン後にコピー

5. Apache を起動し、ブラウザで http://localhost/demo/test.php を表示します

次の情報が表示されます:


コードをコピーします

コードは次のとおりです:

php-java-bridge config… Java version=1.6.0_10

Javaベンダー=Sun Microsystems Inc.

OS=Windows Vista 6.0 on x86
11月23日日曜日, 2008 at 4:31:49 PM Chinese Standard Time

カスタム 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 ドライブにコピーします。

/demo/index2.php

<?
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";
?>
ログイン後にコピー

ブラウザで http://localhost/demo/index2.php を表示します

方法 2: php_java.dll は php.ini (新しいバージョン) を構成する必要がありますphp- java-bridge 用の dll ファイルはありません

まず、PHP および Apache サーバーと JDK (または JRE も使用可能) がインストールされていることを確認してください

オンラインにアクセスして、php-java-bridge をダウンロードします (自分で見つけてください)または 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が見つかります。 INF フォルダー

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"
ログイン後にコピー

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&#39;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
ログイン後にコピー

をチェックして、最後から2番目のJavaステータス項目が実行中でないかどうかを確認します(これは、JavaBridge.jarを開始していないためです)。 。実行中になったら <——- 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/"Start"/Menu/Program Startup)

このように、C : コンピューターの電源を入れるたびに、AppServphpext フォルダー内の phpJavaBridge.bat が自動的に起動します

簡単な例

<?
$system=new Java(&#39;java.lang.System&#39;);
echo "java版本".$system->getProperty(&#39;java.version&#39;)."<BR>";
echo "发行厂商".$system->getProperty(&#39;java.vendor&#39;)."<BR>";
echo "作业系统版本".$system->getProperty(&#39;os.name&#39;)."<BR>";
echo "java版本".$system->getProperty(&#39;os.version&#39;)."<BR>";
echo "java版本".$system->getProperty(&#39;os.arch&#39;)."<BR>";
?>
ログイン後にコピー

または、php-java-bridge (http://localhost/test) で test.php を見つけます。 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"
ログイン後にコピー

extension=PHP_java.dll を PHP.INI に追加し、[java] で PHP_java.jar を指すように java.class.path を設定します。新しい 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 &#39;at&#39; h:mm:ss a zzzz");
print $formatter->format(new Java("java.util.Date"))."n";
?>
ログイン後にコピー

正しくインストールされている場合は、次の情報が表示されます:


コードをコピーします

コードは次のとおりです:

Java version= 1.2.2 Java ベンダー = Sun Microsystems Inc.

OS = Windows 95 4.10 on x86

2000 年 10 月 18 日水曜日、中国標準時午前 10 時 22 分 45 秒
次は、JAVA の呼び出し方法を理解することが重要です。ステップは、独自の JAVA ファイルを作成し、PHP でそれを呼び出すことです。JAVA ファイルの java.class.path は非常に重要です

独自の JAVA クラスを作成して使用します [

大文字の使用に注意してください

]

创建你自己的 JAVA 类非常容易。新建一个 phptest.java 文件,将它放置在你的 java.class.path 目录下【 c:\myclasses】,文件内容如下:

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));
   }
  }
 }
}
ログイン後にコピー

创建这个文件后,我们要编译好这个文件,在 DOS 命令行使用 javac phptest.java 这个命令。

为了使用 PHP 测试这个 JAVA 类,我们在web目录下创建一个 phptest.php 文件,内容如下:

<?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";
?>
ログイン後にコピー

如果你得到这样的警告信息: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实现支付宝在线支付接口开发详解

PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】

php实现压缩合并js的方法

以上がPHPが独自のJavaプログラムを呼び出す方法と例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!