diff --git a/genson/src/main/java/com/owlike/genson/reflect/VisibilityFilter.java b/genson/src/main/java/com/owlike/genson/reflect/VisibilityFilter.java index 089b37f5..b61ff35a 100644 --- a/genson/src/main/java/com/owlike/genson/reflect/VisibilityFilter.java +++ b/genson/src/main/java/com/owlike/genson/reflect/VisibilityFilter.java @@ -70,7 +70,22 @@ public VisibilityFilter(int... modifier) { * @return true if this member is visible according to this filter. */ public final boolean isVisible(Member member) { - return isVisible(member.getModifiers()); + boolean visible = isVisible(member.getModifiers()); + + //Due to recent changes involving reflection access to base java classes, + //we need to perform an additional check to ensure that members belonging + //to java/javax packages are public. Non-public members will always be considered not visible + if(visible){ + Class clazz = member.getDeclaringClass(); + String className = clazz.getName(); + if(className.startsWith("java.") || className.startsWith("javax.")){ + if(!Modifier.isPublic(member.getModifiers())){ + visible = false; + } + } + } + + return visible; } public final boolean isVisible(int modifiers) {