--- old/src/java.base/share/classes/jdk/experimental/value/ValueType.java 2017-06-20 19:15:51.000000000 -0700 +++ new/src/java.base/share/classes/jdk/experimental/value/ValueType.java 2017-06-20 19:15:51.000000000 -0700 @@ -183,15 +183,12 @@ } public Class arrayValueClass(int dims) { - try { - String dimsStr = "[[[[[[[[[[[[[[[["; - if (dims < 1 || dims > 16) { - throw new IllegalArgumentException("cannot create array class for dimension > 16"); - } - return Class.forName(dimsStr.substring(0, dims) + "Q" + valueClass().getName() + ";", false, boxLookup.lookupClass().getClassLoader()); - } catch (ClassNotFoundException ex) { - throw new IllegalStateException(ex); + String dimsStr = "[[[[[[[[[[[[[[[["; + if (dims < 1 || dims > 16) { + throw new IllegalArgumentException("cannot create array class for dimension > 16"); } + String cn = dimsStr.substring(0, dims) + "Q" + valueClass().getName() + ";"; + return MinimalValueTypes_1_0.loadValueTypeClass(boxLookup.lookupClass(), cn); } public String toString() {