Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.2.7-core
-
None
-
None
Description
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.