Search code examples
javaphptomcatclassnotfoundexceptionphp-java-bridge

java.lang.ClassNotFoundException in PHP-Java bridge


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?


Solution

  • 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.