diff --git a/src/main/java/org/apache/commons/lang3/builder/ReflectionDiffBuilder.java b/src/main/java/org/apache/commons/lang3/builder/ReflectionDiffBuilder.java index ca9da55e849..b4711c24a30 100644 --- a/src/main/java/org/apache/commons/lang3/builder/ReflectionDiffBuilder.java +++ b/src/main/java/org/apache/commons/lang3/builder/ReflectionDiffBuilder.java @@ -204,11 +204,18 @@ private void appendFields(final Class clazz) { for (final Field field : FieldUtils.getAllFields(clazz)) { if (accept(field)) { try { - diffBuilder.append(field.getName(), readField(field, getLeft()), readField(field, getRight())); - } catch (final IllegalAccessException e) { + final Object leftValue = readField(field,getLeft()); + final Object rightValue = readField(field,getRight()); + diffBuilder.append(field.getName(), leftValue, rightValue); + } catch (final IllegalAccessException | RuntimeException ex) { // this can't happen. Would get a Security exception instead // throw a runtime exception in case the impossible happens. - throw new IllegalArgumentException("Unexpected IllegalAccessException: " + e.getMessage(), e); + //throw new IllegalArgumentException("Unexpected IllegalAccessException: " + e.getMessage(), e); + + + // Skip inaccessible fields (best-effort reflection) + // IllegalAccessException: Java 8 + // RuntimeException: Java 9+ (InaccessibleObjectException) } } }