Maison développement back-end tutoriel php 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

Jun 02, 2018 am 11:32 AM
java php 方法

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
Copier après la connexion
Copier après la connexion

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;));
?>
Copier après la connexion

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));
   }
  }
 }
}
Copier après la connexion

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";
?>
Copier après la connexion

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"
Copier après la connexion

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
Copier après la connexion

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 <—- cela signifie que JavaBridge.jar a été démarré et que php-java-bridge peut être officiellement utilisé

S'il n'est pas démarré, exécutez :

car c'est impossible pour le démarrer manuellement à chaque fois Allez démarrer JavaBridge.jar

Nous écrivons donc un processus par lots avec le contenu suivant

@echo off
start javaw -jar JavaBridge.jar
Copier après la connexion
Copier après la connexion

Enregistrer sous le nom phpJavaBridge.bat, placez-le de la même manière dans le dossier du plug-in PHP (ici C:AppServ/php/ext)

Créez un raccourci vers le fichier et placez le raccourci créé dans le démarrage (ici est C:/Documents and Settings/All Users/"Start"/Menu/Program Startup)

De cette façon, phpJavaBridge.bat dans le dossier C:AppServphpext sera automatiquement lancé à chaque fois que l'ordinateur est allumé .

Exemple simple

<?
$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>";
?>
Copier après la connexion

Ou recherchez test.php dans php-java-bridge et vérifiez l'effet sur http:// localhost/test.php

<?php
$system=new Java("java.lang.System");
print "Java version=".$system->getProperty("java.version")." <br>";
?>
Copier après la connexion

[java]
extension=PHP_java.dll
java.library.path=c:webPHP4extensions
java.class.path="c:webPHP4extensionsjdk1.2.2PHP_java.jar;c:myclasses"
Copier après la connexion

Ajouter l'extension=PHP_java.dll à PHP. INI, et dans [java], définissez java.class.path pour qu'il pointe vers PHP_java.jar. Si vous utilisez une nouvelle classe JAVA, vous devez également la sauvegarder dans ce chemin. Dans cet exemple, nous utilisons c:myclasses. annuaire.

Pour tester l'environnement, créez le fichier PHP suivant :

<?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";
?>
Copier après la connexion

Si vous l'avez installé correctement, vous verrez le message suivant :


Copier le code Le code est le suivant :

Java version=1.2.2

Java supplier=Sun Microsystems Inc.
OS =Windows 95 4.10 sur x86
Mercredi 18 octobre 2000 à 10 h 22 min 45 s, heure normale de Chine

Il est important de comprendre comment appeler JAVA. La prochaine étape consiste à créer notre propre JAVA. fichier et laissez PHP l'appeler JAVA. Le java.class.path du fichier est important

Créez et utilisez vos propres classes JAVA [Notez la casse]

创建你自己的 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));
   }
  }
 }
}
Copier après la connexion

创建这个文件后,我们要编译好这个文件,在 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";
?>
Copier après la connexion

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

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

Expliquez l'expression de correspondance (PHP 8) et comment elle diffère du commutateur. Expliquez l'expression de correspondance (PHP 8) et comment elle diffère du commutateur. Apr 06, 2025 am 12:03 AM

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

See all articles