Returns the first user defined class loader on the call stack, or the context class loader of the current thread, when no non-null class loader was found.
As you can see, the code should already be using the correct class loader. Is it possible that this is an OC4J bug? Does it reproduce in Tomcat or Jetty or only OC4J?
> ClassLoader exception when af:forEach is used with CLIENT_STATE_METHOD "all"
> ----------------------------------------------------------------------------
>
> Key: TRINIDAD-1062
> URL:
https://issues.apache.org/jira/browse/TRINIDAD-1062> Project: MyFaces Trinidad
> Issue Type: Bug
> Affects Versions: 1.2.7-core
> Reporter: Max Starets
> Fix For: 1.2.8-core
>
> Attachments: ObjectInputStream.diff
>
>
> To reproduce, set CLIENT_STATE_METHOD to "all", and run a page with af:forEach that performs postback.
> The following exception will be thrown:
> 2008-04-21 15:29:37.117
> oracle.classloader.util.AnnotatedClassNotFoundException:
> Missing class: javax.servlet.jsp.jstl.core.IndexedValueExpression
> Dependent class: java.io.ObjectInputStream
> Loader: jre.bootstrap:1.5.0_12
> Code-Source: unknown
> Configuration: jre bootstrap
> This load was initiated at oc4j:11.1.1.0.0 using the Class.forName() method. The missing class is available from the following locations:
> 1. Code-Source:
> /C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/lib/java/shared/oracle.jstl/1.2/jstl
> -api-1_2.jar (from <code-source> (ignore manifest Class-Path) in
> /C:/jdevsystem/system11.1.1.0.22.49.41/o.j2ee/embedded-oc4j/config/server.xml)
> This code-source is available in loader oracle.jstl:1.2. This
> shared-library can be made visible to the "oc4j" loader by modifying the boot
> descriptor.
> at oracle.classloader.PolicyClassLoader.handleClassNotFound
> (PolicyClassLoader.java:2176)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by sun.misc.Launcher$AppClassLoader@20120943]
> at oracle.classloader.PolicyClassLoader.internalLoadClass
> (PolicyClassLoader.java:1729)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by sun.misc.Launcher$AppClassLoader@20120943]
> at oracle.classloader.PolicyClassLoader.loadClass
> (PolicyClassLoader.java:1685)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by sun.misc.Launcher$AppClassLoader@20120943]
> at oracle.classloader.PolicyClassLoader.loadClass
> (PolicyClassLoader.java:1670)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by sun.misc.Launcher$AppClassLoader@20120943]
> at java.lang.ClassLoader.loadClassInternal (ClassLoader.java:319) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> at java.lang.Class.forName0 (Native method) [unknown, by unknown]
> at java.lang.Class.forName (Class.java:242) [jre bootstrap, by
> jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.resolveClass (ObjectInputStream.java:585) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1544)
> [jre bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1466)
> [jre bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readOrdinaryObject
> (ObjectInputStream.java:1699) [jre bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1305) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readObject (ObjectInputStream.java:348) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> The issue is that ObjectInputStream created by CoreResponseStateManager uses default class loader instead of context class loader.