Dieser Artikel stellt hauptsächlich die Methode vor, mit der PHP sein eigenes Java-Programm aufruft, basierend auf dem JAR-Paket eines Drittanbieters und der Verwendung der DLL-Dynamic-Link-Bibliotheksdateierweiterung zum Aufrufen von Java Friends Wer es braucht, kann
wie folgt lauten:
Es ist unnötig zu erwähnen, dass Sie zu Beginn Java Ee 5 + JDK installieren müssen
1 . Laden Sie die php-java-bridge_5.2.2_j2ee.zipExtrahieren Sie sie herunter, es gibt JavaBridge.war Öffnen Sie sie direkt mit winrar, gehen Sie zu WEB-INF /lib/JavaBridge.jar Kopieren Sie dieses JAR-Paket in das ext/-Verzeichnis Ihres PHP-Verzeichnisses.
2. Öffnen Sie das War-Paket. Darin befindet sich ein Java-Ordner. Kopieren Sie alles in Ihr PHP-Projekt, z. B. /demo/java.
3. Die aktuelle Version ist VMBridge Wenn Sie möchten, dass PHP die Java-Klasse aufruft, müssen Sie zuerst JavaBridge starten, java –jar JavaBridge.jar über die
Befehlszeile aufrufen oder auf JavaBridge.jar doppelklicken und im Popup-Fenster den Überwachungsport 8080 auswählen
damit es in Zukunft einfacher startet, habe ich unter ext/ eine neue bat-Datei mit folgendem Inhalt erstellt:
@echo off start javaw -jar JavaBridge.jar
Nach dem Speichern, Doppelklicken Sie zum Starten und es wird ein Eingabeaufforderungsfeld angezeigt, in dem Sie standardmäßig den vmbridge-Port 8080 auswählen können. Klicken Sie einfach auf „OK“
4. Erstellen Sie unter /demo/ eine neue test.php mit dem folgenden Inhalt:
<?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. Starten Sie Apache, sehen Sie sich http://localhost/demo/test.php
im Browser an und Sie werden die folgenden Informationen sehen:
Kopieren Sie den Code Der Code lautet wie folgt:
php-java-bridge config…
Java-Version=1.6.0_10
Java Hersteller=Sun Microsystems Inc.
Betriebssystem=Windows Vista 6.0 auf x86
Sonntag, 23. November 2008 um 16:31:49 Uhr chinesischer Standardzeit
Benutzerdefiniertes 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)); } } } }
Als JAR generieren, auf Laufwerk D kopieren.
/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"; ?>
Sehen Sie http://localhost/demo/index2.php in Ihrem Browser an
Methode 2: php_java.dll muss mit php.ini konfiguriert werden. Die neue Version von php-java-bridge enthält keine DLL-Dateien
Bestimmen Sie zunächst Ihre PHP- und Apache-Server und JDK (oder JRE ist ebenfalls verfügbar) wurden installiert
Gehen Sie online und laden Sie php-java-bridge herunter (finden Sie es selbst oder http://sourceforge.net/project/showfiles.php?group_id=117793)
Dekomprimieren Sie die heruntergeladene PHP-Java-Bridge. Nach der Dekomprimierung befindet sich eine JavaBridge.war im Ordner. Dekomprimieren Sie dann die JavaBridge.war auf die gleiche Weise (win rar kann sie dekomprimieren).
Danach Dekomprimierung, Sie können es vom WEB herunterladen – Suchen Sie java-x86-windows.dll im cgi-Ordner im INF-Ordner und JavaBridge.jar im lib-Ordner im WEB-INF-Ordner
java-x86-windows.dll und JavaBridge.jar in den PHP-Plugin-Ordner (in meinem Fall ist es C:/AppServphp/ext) und ändern Sie java-x86-windows.dll in php_java.dll
Ändern Sie die php.ini-Datei
Wenn php.ini ursprünglich nicht den folgenden Inhalt hat, fügen Sie ihn bitte selbst hinzu. Wenn es ursprünglich den folgenden Inhalt hat, ändern Sie ihn bitte wie folgt [Ich verwende JDK]
Erweiterung =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 neu starten und phpinfo überprüfen
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
Überprüfen Sie, ob das vorletzte Java-Statuselement nicht ausgeführt wird (dies liegt daran, dass Sie JavaBridge.jar nicht gestartet haben). Wenn es läuft <—- bedeutet dies, dass JavaBridge.jar gestartet wurde und php-java-bridge offiziell verwendet werden kann
Wenn es nicht gestartet wird, führen Sie Folgendes aus:
da es nicht möglich ist um es jedes Mal manuell zu starten. Gehen Sie, um JavaBridge.jar zu starten.
Also schreiben wir einen Batch-Prozess mit den folgenden Inhalten
@echo off start javaw -jar JavaBridge.jar
Speichern unter phpJavaBridge.bat, auch in Erstellen Sie eine Verknüpfung zur Datei im PHP-Plugin-Ordner (hier ist C:AppServ/php/ext)
und legen Sie die erstellte Verknüpfung im Startup ab (hier ist C:/ Dokumente und Einstellungen/Alle Benutzer /„Start“/Menü/Programmstart)
Auf diese Weise wird phpJavaBridge.bat im Ordner C:AppServphpext jedes Mal automatisch gestartet, wenn der Computer eingeschaltet wird
Einfaches Beispiel
<? $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>"; ?>
Oder suchen Sie test.php in php-java-bridge, http://localhost/test.php, um den Effekt zu überprüfen
<?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"
Erweiterung=PHP_java.dll zu PHP.INI hinzufügen und java.class.path in [ java], lassen Sie es auf PHP_java.jar verweisen. Wenn Sie eine neue JAVA-Klasse verwenden, sollten Sie diese auch in diesem Pfad speichern. In diesem Beispiel verwenden wir das Verzeichnis c:myclasses.
Um die Umgebung zu testen, erstellen Sie die folgende PHP-Datei:
<?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"; ?>
Wenn Sie es korrekt installiert haben, wird die folgende Meldung angezeigt:
Kopieren Sie den Code Der Code lautet wie folgt:
Java-Version=1.2.2
Java-Anbieter=Sun Microsystems Inc.
OS= Windows 95 4.10 auf x86
Mittwoch, 18. Oktober 2000 um 10:22:45 Uhr China Standard Time
Es ist wichtig zu verstehen, wie man JAVA aufruft. Der nächste Schritt besteht darin, unsere eigene JAVA-Datei zu erstellen und lassen Sie es von PHP aufrufen.
Erstellen und verwenden Sie Ihre eigenen JAVA-Klassen [Beachten Sie die Groß- und Kleinschreibung]
创建你自己的 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基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Methoden und Beispiele für den Aufruf eines eigenen Java-Programms durch PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!