问题
I am working on PHP-Java Bridge.
A syntax from my php file looks as follows:
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
And my php file is located at 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? How can this error be resolved?
回答1:
I had a similar problem, I think your php file is correctly coded. 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
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.
I agree with Boris that $address = new Java('com.odus.apg.cfa.java.address');
should actually be something like $address = new Java('com.odus.apg.cfa.java.Address');
The problem can be sometimes with the permissions rather than the path, naming etc.
来源:https://stackoverflow.com/questions/25892337/java-lang-classnotfoundexception-in-php-java-bridge