Skip to content

类构造器不存在情境下IAE的错误抛出 #966

@JoeyLYZ666

Description

@JoeyLYZ666

Description
我们发现对于同一个测试用例,J9抛出IAE,但是Dragonwell抛出NSME。

Steps to Reproduce

>>> path_to_dragonwell-jdk8/bin/java -cp . TestLauncher 
>>> path_to_dragonwell-jdk11/bin/java -cp . TestLauncher 
>>> path_to_dragonwell-jdk17/bin/java -cp . TestLauncher 
>>> path_to_dragonwell-jdk21/bin/java -cp . TestLauncher 

>>> path_to_j9-jdk8/bin/java -cp . TestLauncher 
>>> path_to_j9-jdk11/bin/java -cp . TestLauncher
>>> path_to_j9-jdk17/bin/java -cp . TestLauncher 
>>> path_to_j9-jdk21/bin/java -cp . TestLauncher

实际结果:
dragonwell-jdk8:

Exception in thread "main" java.lang.IllegalAccessError: java.lang.Class
        at TestLauncher.main(Unknown Source)

dragonwell-jdk11:

Exception in thread "main" java.lang.IllegalAccessError: java.lang.Class
        at TestLauncher.main(Unknown Source)

dragonwell-jdk17:

Exception in thread "main" java.lang.IllegalAccessError: java.lang.Class
        at TestLauncher.main(Unknown Source)

dragonwell-jdk21:

Exception in thread "main" java.lang.IllegalAccessError: java.lang.Class
        at TestLauncher.main(Unknown Source)

j9-jdk8:

Exception in thread "main" java.lang.NoSuchMethodError: java/lang/Class.<init>(Ljava/lang/String;)V (loaded from D:\download\jdk\openj9\jdk-8u452-b09\jre\lib\rt.jar by <Bootstrap Loader>) called from class TestLauncher (loaded from file:/D:/Lab/TestJDoc/reduce/your_dir/ by sun.misc.Launcher$AppClassLoader@599f5fea).
at TestLauncher.main(Unknown Source)

j9-jdk11:

Exception in thread "main" java.lang.NoSuchMethodError: java/lang/Class.<init>(Ljava/lang/String;)V (loaded from jrt:/java.base by <Bootstrap Lo
ader>) called from class TestLauncher (loaded from file:/D:/Lab/TestJDoc/reduce/your_dir/ by jdk.internal.loader.ClassLoaders$AppClassLoader@a53766fe).
at TestLauncher.main(Unknown Source)

j9-jdk17:

Exception in thread "main" java.lang.NoSuchMethodError: java/lang/Class.<init>(Ljava/lang/String;)V (loaded from jrt:/java.base by <Bootstrap Loader>) called from class TestLauncher (loaded from file:/home/share/JSmith_main/your_dir/ by jdk.internal.loader.ClassLoaders$AppClassLoader@a8731894).
        at TestLauncher.main(Unknown Source)

j9-jdk21:

Exception in thread "main" java.lang.NoSuchMethodError: java/lang/Class.<init>(Ljava/lang/String;)V (loaded from jrt:/java.base by <Bootstrap Loader>) called from class TestLauncher (loaded from file:/home/share/JSmith_main/your_dir/ by jdk.internal.loader.ClassLoaders$AppClassLoader@fe0d50b8).
        at TestLauncher.main(Unknown Source)

Expected behavior
在基于上述结果审查 java/lang/Class 的代码后,我们发现并不存在形如 java/lang/Class.(Ljava/lang/String;)V 的构造方法。因此,Dragonwell 应抛出 NoSuchMethodError,而非 IllegalAccessError。

JDK version

openjdk version "1.8.0_462"
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition 8.26.25) (build 1.8.0_462-b01)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition 8.26.25) (build 25.462-b01, mixed mode)

openjdk version "11.0.28.24" 2025-07-15
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition)-11.0.28.24+6-GA (build 11.0.28.24+6)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition)-11.0.28.24+6-GA (build 11.0.28.24+6, mixed mode)

openjdk version "17.0.16" 2025-07-15
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition)-17.0.16.0.17+8-GA (build 17.0.16+8)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition)-17.0.16.0.17+8-GA (build 17.0.16+8, mixed mode, sharing)

openjdk version "21.0.8.0.8" 2025-07-15
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition)-21.0.8.0.8+9-GA (build 21.0.8.0.8)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition)-21.0.8.0.8+9-GA (build 21.0.8.0.8, mixed mode, sharing)

OpenJ9   - 31cf5538b0
OMR      - 9bcff94a2
JCL      - a00de86921 based on jdk8u452-b09)

openjdk version "11.0.27" 2025-04-15
IBM Semeru Runtime Open Edition 11.0.27.0 (build 11.0.27+6)
Eclipse OpenJ9 VM 11.0.27.0 (build openj9-0.51.0, JRE 11 Windows 11 amd64-64-Bit Compressed References 20250504_1192 (JIT enabled, AOT enabled)
OpenJ9   - 31cf5538b0
OMR      - 9bcff94a2
JCL      - 3e17c0897e based on jdk-11.0.27+6)

Eclipse OpenJ9 VM 17.0.16.0 (build openj9-0.53.0, JRE 17 Linux amd64-64-Bit Compressed References 20250715_1115 (JIT enabled, AOT enabled)
OpenJ9   - 017819f167
OMR      - 266a8c6f5
JCL      - 34b4be01e57 based on jdk-17.0.16+8)

IBM Semeru Runtime Open Edition 21.0.8.0 (build 21.0.8+9-LTS)
Eclipse OpenJ9 VM 21.0.8.0 (build openj9-0.53.0, JRE 21 Linux amd64-64-Bit Compressed References 20250715_547 (JIT enabled, AOT enabled)
OpenJ9   - 017819f167
OMR      - 266a8c6f5
JCL      - d5f1e70d135 based on jdk-21.0.8+9)

Execution environment

OS:
	Operating System Name: Linux
	Operating System Architecture: amd64
	Operating System Version: 4.15.0-45-generic

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions