Detaillierte Erläuterung der Methoden und Beispiele für den Aufruf eines eigenen Java-Programms durch PHP

墨辰丷
Freigeben: 2023-03-29 14:14:02
Original
5954 Leute haben es durchsucht

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 Login kopieren
Nach dem Login kopieren

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(&#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;));
?>
Nach dem Login kopieren

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));
   }
  }
 }
}
Nach dem Login kopieren

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";
?>
Nach dem Login kopieren

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"
Nach dem Login kopieren

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&#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
Nach dem Login kopieren

Ü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
Nach dem Login kopieren
Nach dem Login kopieren

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(&#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>";
?>
Nach dem Login kopieren

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>";
?>
Nach dem Login kopieren

[java]
extension=PHP_java.dll
java.library.path=c:webPHP4extensions
java.class.path="c:webPHP4extensionsjdk1.2.2PHP_java.jar;c:myclasses"
Nach dem Login kopieren

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 &#39;at&#39; h:mm:ss a zzzz");
print $formatter->format(new Java("java.util.Date"))."n";
?>
Nach dem Login kopieren

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));
   }
  }
 }
}
Nach dem Login kopieren

创建这个文件后,我们要编译好这个文件,在 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";
?>
Nach dem Login kopieren

如果你得到这样的警告信息: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的方法

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!