2010-09-07 4 views
1

Мне нужна срочная помощь от вас людей. У меня что-то очень странное, пытаясь интегрировать PHP с Java. Во-первых, мой вопрос:Проблема в интеграции PHP-Java с использованием PHP/Java Bridge

Когда я запускаю службу сервера Apache, программа работает нормально. Но, если я закрою браузер и снова открою его, программа больше не работает и дайте мне "Fatal error: Unable to create Java Virtual Machine in C:\php\java.php ...".

Если я перезапущу службу сервера Apache, программа работает снова, но с тем же поведением: если я закрою окно браузера и снова открою его, это не сработает.

Я проверил в Интернете, но не получил никакого решения, но нашел много людей, столкнувшихся с одной проблемой. И многие из них рассказали об ошибке в мосте PHP-Java. Так что есть решение по этой проблеме. У меня не было вариантов, и, если кто-то мог помочь, я буду признателен.

Thank you.

Мои системные характеристики:

  • Windows XP

Я установил

  • сервер XAMPP: - XAMPP-win32-1.6.1-инсталлятор

Это устанавливает PHP, Apache и MySQL в моей системе. Там версии следующие

  • Apache версии: - Apache/2.2.4 (Win32)
  • PHP версия: - 4.3.1
  • Sun Microsystems JDK версии: - jdk1.6.0_16

Я достигаю этого PHP-Java extensoion, используя php-javabridge. Я скачал файл javabridge.jar из следующей ссылке: http://php-java-bridge.sourceforge.net/pjb/download.php

Я поместил загруженный файл javabridge.jar на этом пути: C:\xampp\php\ext\

Настройки, сделанные в файле php.ini для интеграции PHP-Java следующим образом.

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

I also uncomment the java extension. 

extension=php_java.dll 

Я добавил следующие строки в разделе «Параметры модуля» файла 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" 

класс Java, который я использую в 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 скрипт test1.php который использует выше класса 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

еще раз, пожалуйста, не кричите, когда говорите Java. – Joset

+0

Hi Joset! Я не понимаю, что именно вы хотите сказать. –

ответ

0

В PHP Java мост не имеет ничего общего с расширением php_java.dll. Первая является реализацией PHP в пользовательской среде.

the docs.

+0

Привет, Artefacto! Спасибо за ваш ответ. Я удалю путь php_java.dll из файла php.ini, но, пожалуйста, направляйте меня в разделе «Невозможно создать проблему с виртуальной машиной Java». –

Смежные вопросы