使用PHP/Java桥时ClassNotFoundException故障排除


Troubleshooting ClassNotFoundException when using PHP/Java bridge

我已经学习了本教程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致命错误:Uncaught[o(Exception):"java.lang.Exception:CreateInstance失败:新建HelloWorld。原因:java.lang.ClassNotFoundException:在java_require()路径中找不到HelloWorld。请检查路径以及SEL和File权限。负责的VM:1.5.0_14@http://java.sun.com/",网址:#-10 php java.bridge.DynamicJavaBridgeClassLoader.loadClass(DynamicJavaBridgeClassLoader.java:293)

您正在学习的教程已有5年历史,根据常见问题解答,java_require()已被弃用:

为什么不赞成使用java_require()

因为Java没有模块系统。

例如,应用程序B所需的库"lucene-2.3.1.jar",如果应用程序a所需的旧版本的库已经缓存,则无法加载。尝试链接库将在运行时导致"NoClassDefFound"或"NoSuchMethod"错误。或者,某些过程可能会抛出已检查的异常,即使它们尚未声明这些异常。

为了保护PHP开发人员免受Java的"jar地狱",我从PHP/Java Bridge 6.0版本中删除了动态类加载机制;java_require()会发出警告。

一个合适的Java模块系统必须使用特殊的JavaVM挂钩,而这种挂钩直到现在才存在。

如何加载Java库

您应该按照Java单机版或Java Web应用程序文档中的说明链接Java应用程序。

错误表示未找到HelloWorld类。

验证该文件是否确实位于用于java_require的地址。如果是,请检查并确保文件中的代码与教程中描述的完全相同。

相关文章:
  • 没有找到相关文章