After JDK-8297271 and JDK-8355956, javap fails to print class files with a minor class file version != 0. It can be simply reproduced with a file that uses preview features, e.g.,
void main() {
assert 5 instanceof byte b;
}
Stacktrace:
Error: A serious internal error has occurred: java.lang.NullPointerException
Please file a bug report, and include the following information:
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:220)
at java.base/java.lang.reflect.AccessFlag$Location.findInHistory(AccessFlag.java:636)
at java.base/java.lang.reflect.AccessFlag$Location.flagsMask(AccessFlag.java:672)
at java.base/java.lang.reflect.AccessFlag.maskToAccessFlags(AccessFlag.java:408)
at jdk.jdeps/com.sun.tools.javap.BasicWriter.maskToAccessFlagsReportUnknown(BasicWriter.java:63)
at jdk.jdeps/com.sun.tools.javap.BasicWriter.flagsReportUnknown(BasicWriter.java:58)
at jdk.jdeps/com.sun.tools.javap.ClassWriter.getClassModifiers(ClassWriter.java:802)
at jdk.jdeps/com.sun.tools.javap.ClassWriter.write(ClassWriter.java:167)
at jdk.jdeps/com.sun.tools.javap.JavapTask.write(JavapTask.java:859)
at jdk.jdeps/com.sun.tools.javap.JavapTask.writeClass(JavapTask.java:684)
at jdk.jdeps/com.sun.tools.javap.JavapTask.run(JavapTask.java:628)
at jdk.jdeps/com.sun.tools.javap.JavapTask.run(JavapTask.java:474)
at jdk.jdeps/com.sun.tools.javap.Main.main(Main.java:48)
The null is caused by https://github.com/openjdk/jdk/blob/79aff26c2880922b92863911d8a5a035ba9a1e75/src/jdk.jdeps/share/classes/com/sun/tools/javap/ClassWriter.java#L123