简体   繁体   English

PHP-Java桥中的java.lang.ClassNotFoundException

[英]java.lang.ClassNotFoundException in PHP-Java bridge

I am working on PHP-Java Bridge. 我正在使用PHP-Java Bridge。

A syntax from my php file looks as follows: 我的php文件的语法如下:

require_once("java/Java.inc");
$address = new Java('com.odus.apg.cfa.java.address');

I have placed the package file cfa.jar which consist com/odus/apg/cfa/java/address.class file in TOMCAT.HOME/webapps/JavaBridge/WEB-INF/lib 我已经将包含com / odus / apg / cfa / java / address.class文件的文件cfa.jar放在TOMCAT.HOME / webapps / JavaBridge / WEB-INF / lib中

And my php file is located at TOMCAT.HOME/webapps/JavaBridge 我的php文件位于TOMCAT.HOME / webapps / JavaBridge

After this set-up I get 设置完成后,我得到

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

Is this set-up even correct? 这种设置是否正确? Are the jar files and php files located in correct directories? jar文件和php文件是否位于正确的目录中? How can this error be resolved? 如何解决此错误?

I had a similar problem, I think your php file is correctly coded. 我有一个类似的问题,我认为您的php文件已正确编码。 What you need to do is this : 您需要做的是:

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

After this command restart your tomcat server using shutdown.sh and then startup.sh Also, restart the apache webserver using sudo service apache2 restart 此命令后,先使用shutdown.sh重新启动tomcat服务器,然后再启动startup.sh此外,使用sudo service apache2 restart apache Web服务器。

Ensure that the command in the php file is actually exactly in the same case as per the class names in the jar file and path is also correct. 确保php文件中的命令与jar文件中的类名完全相同,并且路径也正确。

I agree with Boris that $address = new Java('com.odus.apg.cfa.java.address'); 我同意鲍里斯(Boris)的说法, $address = new Java('com.odus.apg.cfa.java.address'); should actually be something like $address = new Java('com.odus.apg.cfa.java.Address'); 实际上应该类似于$address = new Java('com.odus.apg.cfa.java.Address');

The problem can be sometimes with the permissions rather than the path, naming etc. 有时问题可能出在权限而不是路径,命名等上。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM