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

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

墨辰丷
墨辰丷Original
2018-06-02 11:32:005945Durchsuche

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(&#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. 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&#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

Ü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 484a5eed0218672cccd608cace6a1469foo = (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!

Stellungnahme:
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