RFR [9] 8139297: java.lang.NoClassDefFoundError: Could not initialize class jdk.internal.jimage.ImageNativeSubstrate (original) (raw)
Chris Hegarty chris.hegarty at oracle.com
Fri Oct 9 18:59:46 UTC 2015
- Previous message: RFR [9] 8139307: Remove sun.misc.ConditionLock and Lock
- Next message: RFR [9] 8139297: java.lang.NoClassDefFoundError: Could not initialize class jdk.internal.jimage.ImageNativeSubstrate
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
This is a little temporary solution to get the jrt-fs up and running again with JDK 8, until JDK-8137017 [1] can be resolved.
It is fair game for an unchecked Exception or Error thrown during class initialization to result in a NCDFE. The code in BasicImageReader should catch java.lang.LinkageError, rather than UnsatisfiedLinkError ( LinkageError is the supertype of NCDFE and UnsatisfiedLinkError ), so that it falls over the the Java implementation when libjimage is not in the runtime image.
diff --git a/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java b/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java --- a/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java +++ b/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java @@ -58,7 +58,7 @@
try {
substrate = ImageNativeSubstrate.openImage(imagePath, byteOrder);
} catch (UnsatisfiedLinkError ex) {
} catch (LinkageError ex) { substrate = ImageJavaSubstrate.openImage(imagePath, byteOrder); }
-Chris.
[1] https://bugs.openjdk.java.net/browse/JDK-8137017
- Previous message: RFR [9] 8139307: Remove sun.misc.ConditionLock and Lock
- Next message: RFR [9] 8139297: java.lang.NoClassDefFoundError: Could not initialize class jdk.internal.jimage.ImageNativeSubstrate
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]