我已经按照本教程http://www.dsl.uow.edu.au/~sk33/php5java.htm,但最后我尝试了这个
<?php
java_require('http://localhost/test/HelloWorld.jar');
$myObj = new Java('HelloWorld');
// display Hello World
echo (String) $myObj->getHelloWorld();
?>
我得到了这个例外
PHP致命错误:未捕获[o(例外):“java.lang.Exception:CreateInstance失败:新的HelloWorld。原因:java.lang.ClassNotFoundException:在java_require()路径中找不到HelloWorld。请检查路径和SEL和文件权限。责任VM:1.5.0_14@http://java.sun.com/“at:# - 10 php java.bridge.DynamicJavaBridgeClassLoader.loadClass(DynamicJavaBridgeClassLoader.java:293)
答案 0 :(得分:2)
您关注的教程已有5年历史,根据FAQ,java_require()
已被弃用:
为什么不推荐使用java_require()?
因为Java没有模块系统。
例如,如果应用程序A所需的旧版本库已经被缓存,则无法加载应用程序B所需的库“lucene-2.3.1.jar”。 尝试链接库无论如何都会在运行时导致“NoClassDefFound”或“NoSuchMethod”错误。或者某些程序可能会抛出已检查的异常,即使它们尚未声明它们。
为了保护PHP开发人员不受Java的“jar hell”的影响,我已经从PHP / Java Bridge 6.0版中删除了动态类加载机制; java_require()发出警告。
正确的Java模块系统必须使用特殊的Java VM挂钩,这些挂钩直到现在才存在。
如何加载Java库?
您应该按照Java standalone或Java webapps文档中的说明链接您的Java应用程序。
答案 1 :(得分:1)
错误表示找不到HelloWorld
类。
确认该文件确实位于您用于java_require
的地址。如果是,请检查并确保文件中的代码完全按照教程中的描述。