Consider this testcase:
---
$ cat reproduce.sh
rm -rf src lib classes
mkdir -p lib/test
cat >lib/test/Intermediate.java <<EOF
package test;
public class Intermediate extends Base {}
EOF
cat >lib/test/Base.java <<EOF
package test;
public class Base {}
EOF
javac -d classes lib/test/Intermediate.java lib/test/Base.java
rm classes/test/Base.class
mkdir -p src/test
cat >src/test/Test.java <<EOF
package test;
public class Test {
private void test(Intermediate i) {
int j = i != null ? i.get() : -1;
}
}
EOF
javac -cp classes -XDdev src/test/Test.java
---
When compiled (with JDK 25):
---
$ bash reproduce.sh
src/test/Test.java:4: error: cannot access Base
int j = i != null ? i.get() : -1;
^
class file for test.Base not found
1 error
An exception has occurred in the compiler (25-internal). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.lang.NullPointerException: Cannot invoke "com.sun.tools.javac.code.Symbol.flags()" because "sym" is null
at jdk.compiler/com.sun.tools.javac.code.Types.memberType(Types.java:2304)
at jdk.compiler/com.sun.tools.javac.comp.Attr.isBooleanOrNumeric(Attr.java:2143)
at jdk.compiler/com.sun.tools.javac.comp.Attr.isBooleanOrNumeric(Attr.java:2132)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitConditional(Attr.java:2070)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCConditional.accept(JCTree.java:1580)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:723)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1315)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1066)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:770)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1460)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1136)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1242)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:960)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:5653)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5541)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5361)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:5298)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1346)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:968)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:178)
at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:66)
at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:52)
printing javac parameters to: /tmp/javac.20251121_120610.args
---
---
$ cat reproduce.sh
rm -rf src lib classes
mkdir -p lib/test
cat >lib/test/Intermediate.java <<EOF
package test;
public class Intermediate extends Base {}
EOF
cat >lib/test/Base.java <<EOF
package test;
public class Base {}
EOF
javac -d classes lib/test/Intermediate.java lib/test/Base.java
rm classes/test/Base.class
mkdir -p src/test
cat >src/test/Test.java <<EOF
package test;
public class Test {
private void test(Intermediate i) {
int j = i != null ? i.get() : -1;
}
}
EOF
javac -cp classes -XDdev src/test/Test.java
---
When compiled (with JDK 25):
---
$ bash reproduce.sh
src/test/Test.java:4: error: cannot access Base
int j = i != null ? i.get() : -1;
^
class file for test.Base not found
1 error
An exception has occurred in the compiler (25-internal). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.lang.NullPointerException: Cannot invoke "com.sun.tools.javac.code.Symbol.flags()" because "sym" is null
at jdk.compiler/com.sun.tools.javac.code.Types.memberType(Types.java:2304)
at jdk.compiler/com.sun.tools.javac.comp.Attr.isBooleanOrNumeric(Attr.java:2143)
at jdk.compiler/com.sun.tools.javac.comp.Attr.isBooleanOrNumeric(Attr.java:2132)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitConditional(Attr.java:2070)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCConditional.accept(JCTree.java:1580)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:723)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1315)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1066)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:770)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1460)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1136)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1242)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:960)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:5653)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5541)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5361)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:5298)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1346)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:968)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:178)
at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:66)
at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:52)
printing javac parameters to: /tmp/javac.20251121_120610.args
---