--- old/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java 2012-11-27 11:14:59.000000000 -0800 +++ new/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java 2012-11-27 11:14:59.000000000 -0800 @@ -30,8 +30,7 @@ import java.lang.reflect.Method; import java.security.ProtectionDomain; import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; -import java.util.logging.Logger; +import sun.util.logging.PlatformLogger; import jdk.internal.org.objectweb.asm.*; import static jdk.internal.org.objectweb.asm.Opcodes.*; import sun.misc.Unsafe; @@ -192,7 +191,7 @@ try (FileOutputStream fos = new FileOutputStream(lambdaClassName.replace('/', '.') + ".class")) { fos.write(classBytes); } catch (IOException ex) { - Logger.getLogger(InnerClassLambdaMetafactory.class.getName()).log(Level.SEVERE, null, ex); + PlatformLogger.getLogger(InnerClassLambdaMetafactory.class.getName()).severe(ex.getMessage(), ex); } } --- old/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2012-11-27 11:15:00.000000000 -0800 +++ new/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2012-11-27 11:15:00.000000000 -0800 @@ -448,7 +448,7 @@ case "getDriver": case "getDrivers": case "deregisterDriver": - return defc == java.sql.DriverManager.class; + return defc == getClass("java.sql.DriverManager"); case "newUpdater": if (defc == java.util.concurrent.atomic.AtomicIntegerFieldUpdater.class) return true; if (defc == java.util.concurrent.atomic.AtomicLongFieldUpdater.class) return true; @@ -482,4 +482,14 @@ } return false; } + + // avoid static dependency to a class in other modules + private static Class getClass(String cn) { + try { + return Class.forName(cn, false, + MethodHandleNatives.class.getClassLoader()); + } catch (ClassNotFoundException e) { + throw new InternalError(e); + } + } }