Maison  >  Article  >  développement back-end  >  Explication détaillée des méthodes et exemples de PHP appelant son propre programme Java

Explication détaillée des méthodes et exemples de PHP appelant son propre programme Java

墨辰丷
墨辰丷original
2018-06-02 11:32:005945parcourir

Cet article présente principalement la méthode permettant à PHP d'appeler son propre programme Java. Il analyse plus en détail les deux méthodes permettant à PHP d'appeler un programme Java basé sur un package jar tiers et utilisant l'extension de fichier de bibliothèque de liens dynamiques DLL pour appeler Java Friends. qui en ont besoin peuvent Pour référence,

sont les suivants :

Inutile de dire que vous devez installer jdk au début, j'ai installé java ee 5+jdk

1. . Téléchargez le php-java-bridge_5.2.2_j2ee.zipExtractez-le, il y a JavaBridge.war Ouvrez-le directement avec winrar, allez sur WEB-INF /lib/JavaBridge.jar Copiez ce package jar dans le répertoire ext/ de votre répertoire php.

2. Ouvrez le package war, il y a un dossier java à l'intérieur, copiez le tout dans votre projet PHP, tel que /demo/java

3. voulez que php appelle la classe java, vous devez d'abord démarrer JavaBridge, appeler java –jar JavaBridge.jar à partir de la ligne de commande

ou double-cliquer sur JavaBridge.jar, sélectionner le port d'écoute 8080 dans la fenêtre contextuelle

afin de faciliter le démarrage à l'avenir, j'ai créé un nouveau fichier bat sous ext/ avec le contenu suivant :

@echo off
start javaw -jar JavaBridge.jar

Après lors de l'enregistrement, double-cliquez pour démarrer et il y aura une boîte de dialogue pour sélectionner vmbridge. Le port par défaut est 8080, cliquez simplement sur ok

4. Créez un nouveau test.php sous /demo/ avec le contenu suivant :

<?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. Démarrez Apache et affichez http://localhost/demo/test.php

dans le navigateur. voir les informations suivantes :

Copier le code Le code est le suivant :

php-java-bridge config…
Java version=1.6.0_10
Java supplier=Sun Microsystems Inc.
OS=Windows Vista 6.0 sur x86
Dimanche 23 novembre 2008 à 16:31:49, heure normale de Chine

JAR personnalisé :

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));
   }
  }
 }
}

généré en tant que JAR, copiez-le sur le lecteur 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";
?>

Voir http://localhost/demo/index2.php

Méthode 2 : php_java.dll doit configurer php.ini, la nouvelle version de php-java-bridge n'a pas de fichiers dll

Déterminez d'abord vos serveurs PHP et Apache et JDK ( ou JRE est également disponible) a été installé

Allez en ligne et téléchargez php-java-bridge (trouvez-le vous-même ou http://sourceforge.net/project/showfiles.php?group_id=117793)

Décompressez le php-java-bridge téléchargé. Après la décompression, il y aura un JavaBridge.war dans le dossier Puis décompressez ce JavaBridge.war de la même manière (win rar peut le décompresser)
Après la décompression, vous. pouvez trouver java-x86-windows.dll dans le dossier cgi du dossier WEB-INF et trouver JavaBridge.jar dans le dossier lib du dossier WEB-INF

Remplacez java-x86-windows.dll par Copiez JavaBridge.jar dans le dossier du plug-in de PHP (dans mon cas, c'est C:/AppServphp/ext) et remplacez java-x86-windows.dll par php_java.dll

Modifier le fichier php.ini

Si php.ini n'a pas à l'origine le contenu suivant, veuillez l'ajouter vous-même. S'il a à l'origine le contenu suivant, veuillez le modifier comme suit [J'utilise 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"

Redémarrez Apache et vérifiez 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

Vérifiez si l'avant-dernier élément d'état Java n'est pas en cours d'exécution (c'est parce que vous n'avez pas démarré JavaBridge.jar). S'il devient en cours d'exécution a212f3b5d90b6d6e6557ae2d931cb317foo = (string) 12345678; or $myj->foo = "12345678″;

这只是一个很小的例子,你可以创建你自己的 JAVA 类,并使用 PHP 很好的调用它!关键在于理解java.class.path目录的重要性。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php实现支付宝在线支付接口开发详解

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

php实现压缩合并js的方法

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn