我已按照本教程 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 Fatal error: Uncaught [o(Exception):"java.lang.Exception: CreateInstance failed:new HelloWorld. Cause: java.lang.ClassNotFoundException: Could not find HelloWorld in java_require() path. Please check the path and the SEL and File permissions. Responsible VM: 1.5.0_14@http://java.sun.com/" at:#-10 php java.bridge.DynamicJavaBridgeClassLoader.loadClass(DynamicJavaBridgeClassLoader.java:293)
最佳答案
您正在学习的教程已有 5 年历史,并且根据 FAQ , java_require()
已弃用:
block 引用>Why has java_require() been deprecated?
Because Java doesn't have a module system.
For example a library "lucene-2.3.1.jar" required by application B, cannot be loaded if an older version of the library, required by application A, is already cached. An attempt to link the library anyway will cause "NoClassDefFound" or "NoSuchMethod" errors at runtime. Or some procedures may throw checked exceptions even though they haven't declared them.
To protect PHP developers from Java's "jar hell", I have removed the dynamic class loading mechanism from PHP/Java Bridge version 6.0; java_require() issues a warning.
A proper Java module system must use special Java VM hooks, which don't exist until now.
How do I load Java libraries?
You should link your Java application as described in the Java standalone or Java webapps documents.
关于java - 使用 PHP/Java 桥接器时排除 ClassNotFoundException 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829265/