Java 如何在zend server CE上安装.jar文件并从php脚本调用它

Java 如何在zend server CE上安装.jar文件并从php脚本调用它,java,jar,zend-server,php-java-bridge,Java,Jar,Zend Server,Php Java Bridge,我让zend javabridge工作。现在我想用一个同名的类调用一个.jar文件myWebTest.jar。然后我想调用一个函数testWeb,它返回一个helloworld字符串 这是基于32位Win 7专业系统的 我将myWebTest.jar添加到位于/zend/zendserver/etc/java_bridge_server.ini中的类路径中: [JAVA_BRIDGE_SERVER] CLASSPATH="C:\Program Files\Zend\ZendServer\bi

我让zend javabridge工作。现在我想用一个同名的类调用一个.jar文件myWebTest.jar。然后我想调用一个函数testWeb,它返回一个helloworld字符串

这是基于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 server,正在尝试的代码是:

$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
我在任何地方都找不到关于这个的答案。Java()的参数是要访问的类的完全限定类名,而不是jar文件的名称。例如,php java桥文档说

java("java.lang.Long")->MAX_VALUE
这将访问包
java.lang
中的类
Long


有一些关于java包和类名的信息。

来自

不要混淆,实际上
类名
需要是类的
完整限定名
。例如,如果您有一个如下所示的类:

package experiment;

public class Test {
    ....
}
这里的类名是:
Test
完全限定名称:
experiment.Test

因此,要在PHP中实例化此类,您需要编写:

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

另外,根据您的异常日志

Java Exception java.lang.ClassNotFoundException: myWebTest

它表明,在类路径中找不到任何名为
myWebTest
的类。这意味着jar文件中没有名为
myWebTest
的类,或者jar没有正确加载。

这并没有给出一个可以使用外部.jar文件复制的示例。我快发疯了:(你需要知道你想要调用的类的完全限定名。谢谢,除此之外,java开发人员还拥有默认的(私有的)方法。现在一切都正常了。
Java Exception java.lang.ClassNotFoundException: myWebTest