Java 如何在zend server CE上安装.jar文件并从php脚本调用它
我让zend javabridge工作。现在我想用一个同名的类调用一个.jar文件myWebTest.jar。然后我想调用一个函数testWeb,它返回一个helloworld字符串 这是基于32位Win 7专业系统的 我将myWebTest.jar添加到位于/zend/zendserver/etc/java_bridge_server.ini中的类路径中: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
[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