PHP java桥中的java.lang.ClassNotFoundException

PHP java桥中的java.lang.ClassNotFoundException,java,php,tomcat,classnotfoundexception,php-java-bridge,Java,Php,Tomcat,Classnotfoundexception,Php Java Bridge,我正在研究PHP Java桥 我的php文件中的语法如下所示: require_once("java/Java.inc"); $address = new Java('com.odus.apg.cfa.java.address'); 我已将包含com/odus/apg/cfa/java/address.class文件的包文件cfa.jar放在TOMCAT.HOME/webapps/JavaBridge/WEB-INF/lib中 我的php文件位于TOMCAT.HOME/webapps/Java

我正在研究PHP Java桥

我的php文件中的语法如下所示:

require_once("java/Java.inc");
$address = new Java('com.odus.apg.cfa.java.address');
我已将包含com/odus/apg/cfa/java/address.class文件的包文件cfa.jar放在TOMCAT.HOME/webapps/JavaBridge/WEB-INF/lib中

我的php文件位于TOMCAT.HOME/webapps/JavaBridge

经过这次设置后,我得到了

Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new com.odus.apg.cfa.java.address. Cause: java.lang.ClassNotFoundException: com.odus.apg.cfa.java.address VM: 1.7.0_40@http://java.oracle.com/" at: #-18 java.net.URLClassLoader$1.run(Unknown Source) #-17 java.net.URLClassLoader$1.run(Unknown Source) #-16 java.security.AccessController.doPrivileged(Native Method) #-15 java.net.URLClassLoader.findClass(Unknown Source) #-14 java.lang.ClassLoader.loadClass(Unknown Source) #-13 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) #-12 java.lang.ClassLoader.loadClass(Unknown Source) #-11 java.lang.Class.forName0(Native Method) #-10 java.lang.Class.forName(Unknown Source) #-9 php.java.bridge.Util.classForName(Util.java:1518) #-8 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-7 php.java.bridge.Request.handleRequest(Request.java:458) #-6 php.java.bridge.Request.handleRequests(Request.java:500) #-5 php.java.bridge.JavaBridge.handleRequests(JavaBridge.java:150) #-4 php in /usr/share/apache-tomcat-7.0.55/webapps/JavaBridge/java/Java.inc on line 195

这个设置是否正确?jar文件和php文件是否位于正确的目录中?如何解决此错误?

我遇到了类似的问题,我认为您的php文件编码正确。您需要做的是:

sudo chown yourprofile:yourprofile-R TOMCAT.HOME/webapps/JavaBridge/WEB-INF/lib/cfa.jar

执行此命令后,使用
shutdown.sh
重新启动tomcat服务器,然后使用
startup.sh
另外,使用
sudo服务apache2 restart重新启动apache Web服务器

确保php文件中的命令实际上与jar文件中的类名完全相同,路径也正确

我同意Boris的观点,
$address=newJava('com.odus.apg.cfa.Java.address')
实际上应该类似于
$address=newjava('com.odus.apg.cfa.Java.address')


问题有时可能与权限有关,而不是路径、命名等。

您确定这是一个类:
com.odus.apg.cfa.java.address
?在我看来它像一个包。类文件address.class在cfa.jarok的内部。Java中的类应该位于
PascalCase
-so
Address
中。但这不是问题所在,只是(非常)令人困惑。php文件似乎无法找到cfa.jar。java中是否有任何语法可以引用这些jar文件?tomcat重新启动修复了我的问题,因为tomcat/java桥在启动时索引了jar