--- old/src/java.base/share/classes/java/io/ObjectStreamClass.java 2019-05-18 12:09:29.000000000 +0100 +++ new/src/java.base/share/classes/java/io/ObjectStreamClass.java 2019-05-18 12:09:28.000000000 +0100 @@ -31,6 +31,7 @@ import java.lang.ref.WeakReference; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import java.lang.reflect.InaccessibleObjectException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.UndeclaredThrowableException; import java.lang.reflect.Member; @@ -473,6 +474,7 @@ name = cl.getName(); isProxy = Proxy.isProxyClass(cl); isEnum = Enum.class.isAssignableFrom(cl); + boolean isInlineClass = cl.isValue(); serializable = Serializable.class.isAssignableFrom(cl); externalizable = Externalizable.class.isAssignableFrom(cl); @@ -540,6 +542,8 @@ if (deserializeEx == null) { if (isEnum) { deserializeEx = new ExceptionInfo(name, "enum type"); + } else if (isInlineClass && writeReplaceMethod == null) { + deserializeEx = new ExceptionInfo(name, "inline class"); } else if (cons == null) { deserializeEx = new ExceptionInfo(name, "no valid constructor"); } @@ -1502,7 +1506,7 @@ cons.setAccessible(true); return ((cons.getModifiers() & Modifier.PUBLIC) != 0) ? cons : null; - } catch (NoSuchMethodException ex) { + } catch (NoSuchMethodException | InaccessibleObjectException ex) { return null; } }