2010-09-07 7 views
1

J'ai besoin d'une aide urgente de votre part. J'ai obtenu quelque chose de très étrange en essayant d'intégrer PHP à Java. Tout d'abord, ma question:Problème dans l'intégration PHP-Java en utilisant PHP/Java Bridge

Lorsque je démarre le service du serveur Apache, le programme s'exécute bien. Mais, si je ferme le navigateur et l'ouvre à nouveau, le programme ne fonctionne plus et me donne un "Fatal error: Unable to create Java Virtual Machine in C:\php\java.php ...". Si je redémarre le service du serveur Apache, le programme fonctionne à nouveau, mais avec le même comportement: si je ferme la fenêtre du navigateur et l'ouvre à nouveau, cela ne fonctionne pas.

J'ai vérifié sur internet mais je n'ai trouvé aucune solution mais j'ai trouvé beaucoup de gens confrontés au même problème. Et beaucoup d'entre eux ont dit son bug dans PHP-Java pont. Donc, y a-t-il une solution à ce problème? J'ai manqué d'options et, si quelqu'un pouvait aider, j'apprécierai.

Merci.

Mes spécifications du système:

  • Windows XP

J'ai installé

  • serveur XAMPP: - xampp-win32-1.6.1-installateur

Cela installe PHP, Apache et MySQL sur mon système. Là versions sont les suivantes

  • Apache Version: - Apache/2.2.4 (Win32)
  • version PHP: - 4.3.1
  • version de JDK Sun Microsystems: - jdk1.6.0_16

Je réalise cette extension PHP-Java en utilisant php-javabridge. J'ai téléchargé le fichier javabridge.jar depuis l'URL suivante: http://php-java-bridge.sourceforge.net/pjb/download.php

J'ai placé le fichier javabridge.jar téléchargé sur ce chemin: C:\xampp\php\ext\

Les réglages effectués dans le fichier php.ini pour l'intégration php-java sont les suivants.

; Directory in which the loadable extensions (modules) reside. 
extension_dir = "C:\xampp\php\ext\" 

I also uncomment the java extension. 

extension=php_java.dll 

J'ai ajouté les lignes suivantes dans la section Paramètres du module du fichier PHP.ini.

;;;;;;;;;;;;;;;;;;; 
; Module Settings ; 
;;;;;;;;;;;;;;;;;;; 

[Java] 
;This points to the directory where your Java 
;classes will be stored. You can designate multiple 
;paths, each path separated by a semicolon. 
;It must also include the location of php_java.jar 
java.class.path = "C:\xampp\php\ext\JavaBridge.jar;C:\xampp\php\extensions\php_java.jar;C:\Program Files\Java\jdk1.6.0_16\jre\lib;C:\Program Files\Java\jdk1.6.0_16;C:\prog" 

;java.class.path = "C:\xampp\php\extensions\php_java.jar;C:\prog" 
; This points to the bin directory of the JDK. 
java.home = "C:\Program Files\Java\jdk1.6.0_16\bin" 

; This must point to the Java Virtual Machine (jvm.dll) file. 
java.library = "C:\Program Files\Java\jdk1.6.0_16\jre\bin\server\jvm.dll" 

; This must point to the location of php_java.dll. 
java.library.path = "C:\xampp\php\ext;C:\Program Files\Java\jdk1.6.0_16\jre\lib" 

java.java = "C:\Program Files\Java\jdk1.6.0_16\bin\javaw.exe" 

classe Java que j'utilise dans le script PHP.

import java.util.*; 
import java.text.*; 

public class SalesTax { 

    public String SalesTax(double price, double salesTax) { 

    double tax = price * salesTax; 

    NumberFormat numberFormatter; 

    numberFormatter = NumberFormat.getCurrencyInstance(); 
    String priceOut = numberFormatter.format(price); 
    String taxOut = numberFormatter.format(tax); 

    numberFormatter = NumberFormat.getPercentInstance(); 
    String salesTaxOut = numberFormatter.format(salesTax); 

    String str = "A sales Tax of " + salesTaxOut + 
       " on " + priceOut + " equals " + taxOut + "."; 

    return str; 

    } 

} 

PHP script test1.php qui utilise au-dessus de la classe java

<?php 
// Format the HTML form. 
$salesTaxForm = <<<SalesTaxForm 
    <form action="test1.php" method="post"> 
    Price (ex. 42.56):<br> 
    <input type="text" name="price" size="15" maxlength="15" value=""><br> 
    Sales Tax rate (ex. 0.06):<br> 
    <input type="text" name="tax" size="15" maxlength="15" value=""><br> 
    <input type="submit" name="submit" value="Calculate!"> 
    </form> 
SalesTaxForm; 

if (! isset($_POST[submit])) 
    echo $salesTaxForm; 
else 
{ 
    // Instantiate the SalesTax class. 
    $salesTax = new Java("SalesTax"); 
    // Don't forget to typecast in order to 
    // conform with the Java method specifications. 
    $price = (double) $_POST[price]; 
    $tax = (double) $_POST[tax]; 
    print $salesTax->SalesTax($price, $tax); 
} 
?> 
+0

encore, s'il vous plaît ne criez pas quand vous dites Java. – Joset

+0

Salut Joset! Je ne comprends pas exactement ce que tu veux dire. –

Répondre

0

Le pont PHP Java n'a rien à voir avec l'extension php_java.dll. Le premier est une implémentation PHP utilisateur.

Veuillez lire the docs.

+0

Bonjour Artefacto! Merci pour votre réponse. Je vais supprimer le chemin d'accès php_java.dll du fichier php.ini, mais veuillez me guider dans le problème "Impossible de créer une machine virtuelle Java". –