JDK-8028626 : invokeinterface selects the static Object.registerNatives method
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 7u45,8
  • Priority: P2
  • Status: Closed
  • Resolution: Won't Fix
  • Submitted: 2013-11-19
  • Updated: 2025-07-31
  • Resolved: 2025-07-31
Related Reports
Relates :  
Relates :  
Description
Selection of a method to invoke via invokeinterface involves a search for "an instance method with the same name and descriptor as the resolved method" (per JVMS).  Yet this search is matching the private static method Object.registerNatives.

Test:

interface I { public void registerNatives(); }
class C implements I {} // compiled separately
class Test {
  public static void main(String... args) {
    I i = new C(); i.registerNatives();
  }
}

Expected: AME (or, if I.registerNatives is a default method, invoke that method)
Actual: IAE (prior to JDK-8024804, a crash)

This is related to JDK-8024804, but note that that bug is about _resolution_, not _selection_.