Search code examples
javatomcattomcat6classnotfoundexception

java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory on Tomcat 6


Why I get this ClassNotFoundException when starting my Tomcat 6 instance?

Caused by: java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0_40]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_40]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.7.0_40]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_40]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.7.0_40]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0_40]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.7.0_40]
    at java.lang.Class.forName0(Native Method) ~[na:1.7.0_40]
    at java.lang.Class.forName(Class.java:270) ~[na:1.7.0_40]
    at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:63) ~[na:1.7.0_40]
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:671) ~[na:1.7.0_40]
    ... 36 common frames omitted

The class that is being reported as not found is in catalina.jar (which is in the Tomcat libs folder).

I get this error while trying to initialize a Hibernate SessionFactory, while looking up a data source defined via JNDI.

On tomcat 7, the application starts fine.

Environment:

  • JDK: 1.7.40
  • Tomcat: 6.0.36

Solution

  • Switch to a 1.6 JDK to run Tomcat 6. At least this solved my problem.