RFR: 8376534: Source launcher instantiates wrong class on inherited instance main
Jonathan László Lampérth
jlamperth at openjdk.org
Tue Feb 3 20:53:56 UTC 2026
Fix a bug where, for inherited instance main methods, the source launcher attempts to invoke main on an instance of the superclass/superinterface that declares main, instead of on an instance of the inheriting class.
<details closed>
<summary>Failure Example</summary>
// A.java
class A extends B {}
// B.java
class B {
void main() {
System.out.println(getClass().getName());
}
}
$ java A.java
B // expected "A" here
$ java B.java
B
```
</details>
Note: There is still an issue with inheriting main from a different package in modular mode, which will be handled separately [JDK-8377010](https://bugs.openjdk.org/browse/JDK-8377010)
-------------
Commit messages:
- Ensure source launcher instantiates correct class for inherited main
Changes: https://git.openjdk.org/jdk/pull/29550/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29550&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8376534
Stats: 62 lines in 2 files changed: 51 ins; 4 del; 7 mod
Patch: https://git.openjdk.org/jdk/pull/29550.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/29550/head:pull/29550
PR: https://git.openjdk.org/jdk/pull/29550
More information about the compiler-dev
mailing list