使用PHP / Java桥时对ClassNotFoundException进行故障排除
我已经按照本教程http://www.dsl.uow.edu.au/~sk33/php5java.htm ,但最后当我尝试这个
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)
您所关注的教程java_require()
5年历史,根据常见问题解答 ,不推荐使用java_require()
:
为什么java_require()已被弃用?
因为Java没有模块系统。
例如,如果应用程序A所需的旧版本库已经被缓存,则无法加载应用程序B所需的库“lucene-2.3.1.jar”。 无论如何都试图链接库将在运行时导致“NoClassDefFound”或“NoSuchMethod”错误 。 或者某些过程可能会抛出已检查的exception,即使它们尚未声明它们。
为了保护PHP开发人员免受Java“jar hell”的影响, 我从PHP / Java Bridge 6.0版中删除了动态类加载机制 。 java_require()发出警告。
正确的Java模块系统必须使用特殊的Java VM挂钩,这些挂钩直到现在才存在。
如何加载Java库?
您应该按照Java独立或Java Web应用程序文档中的描述链接Java应用程序。
该错误表明找不到HelloWorld
类。
validation该文件是否确实位于您用于java_require
的地址。 如果是,请检查并确保文件中的代码与教程中描述的完全相同。
- 如何使用JSTL执行等效的java If-Else块?
- Spring Security @AuthenticationPrincipal
- 将标记添加到lucene令牌流
- 不推荐使用richfaces javax.faces.el.MethodBinding替换使用
- java中的json模式validation
- 如何对读取给定文件的方法进行unit testing
- JSF 2 – Beanvalidation:validation失败 – >空值被替换为来自托管bean的最后一个有效值
- IllegalStateException:必须将Gremlin Server配置为使用JanusGraphManager
- JAXB在生成的xml中使用“xsi:type”和“xmlns:xsi”