Как установить файл .jar на Zend-сервер CE и вызвать его из сценария php - PullRequest
1 голос
/ 08 декабря 2011

У меня работает Zend Javabridge.Теперь я хочу вызвать файл .jar myWebTest.jar с тем же классом.Затем я хочу вызвать функцию testWeb, которая возвращает строку приветствия.

Это в 32-битной профессиональной системе Win 7

Я добавил myWebTest.jar в путь к классам, расположенный в / zend / zendserver /etc / java_bridge_server.ini:

[JAVA_BRIDGE_SERVER]
  CLASSPATH="C:\Program Files\Zend\ZendServer\bin\javamw.jar;C:\Program Files\Zend\ZendServer\bin\myWebTest.jar;."

Этот путь правильный.

Я перезапустил Zend-сервер и пытаюсь ввести следующий код:

$jObj = new Java("myWebTest");

// Print date through the object
print $jObj->testWeb("jim");

Журнал:

1 {main}
  thrown in C:\Program Files\Zend\Apache2\htdocs\javaObject.php on line 4
[08-Dec-2011 11:44:48] PHP Fatal error:  Call to a member function testWeb() on a non-object in C:\Program Files\Zend\Apache2\htdocs\javaObject.php on line 6
[08-Dec-2011 11:45:51] PHP Fatal error:  Uncaught exception 'JavaException' with message 'Java Exception java.lang.ClassNotFoundException: myWebTest
java.lang.ClassNotFoundException: myWebTest
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)

in C:\Program Files\Zend\Apache2\htdocs\javaObject.php:4
Stack trace:
  #0 C:\Program Files\Zend\Apache2\htdocs\javaObject.php(4): *No Class!*->jbridge('myWebTest')
  #1 {main}
thrown in C:\Program Files\Zend\Apache2\htdocs\javaObject.php on line 4

Я нигде не могу найти, как это сделать.ТИА Джим

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Из документации Java

object java(string $class_name [ , ... ])

Parameters
class_name: Class name to create
       ...: Additional arguments are treated as constructor parameters

Return Value: The Java object that was created, NULL otherwise 

Не путать, на самом деле class name должен быть full qualified Name класса. Например, если у вас есть класс, как показано ниже:

package experiment;

public class Test {
    ....
}

Здесь имя класса: Test Полное имя: experiment.Test

Итак, чтобы создать экземпляр этого класса в PHP, вам нужно написать:

$test = new Java("experiment.Test");

Дополнительно по вашему журналу исключений

Java Exception java.lang.ClassNotFoundException: myWebTest

Это показывает, что он не может найти ни одного класса с именем myWebTest в вашем пути к классам. Это означает, что либо в файле jar нет класса с именем myWebTest, либо jar загружен неправильно.

0 голосов
/ 11 декабря 2011

Аргумент Java () - это полное имя класса, к которому вы хотите получить доступ, а не имя файла JAR.Например, документы php java bridge говорят,

java("java.lang.Long")->MAX_VALUE

Это доступ к классу Long, в пакете java.lang

Существует некоторая информация о пакетах java и именах классов здесь .

...