gpt4 book ai didi

java - 如何重现 ClassCircularityError

转载 作者:行者123 更新时间:2023-12-01 20:21:21 24 4
gpt4 key购买 nike

除了抛出新的ClassCircularityError(...)之外,有谁知道如何重现java.lang.ClassCircularityError?如果可能的话,您能给我看一个总是出现错误的 main() 程序示例吗?

根据Javadoc :

Thrown when the Java Virtual Machine detects a circularity in the superclass hierarchy of a class being loaded.

最佳答案

除非运行时使用的某些库的版本与编译时使用的库的版本不匹配,否则通常不会发生此错误。

您可以使用单独的编译轻松重现错误。

首先,使用以下定义编译A.java:

class B {}
class A extends B {}

然后使用反向类层次结构编译 B.java:

class A {}
class B extends A {}

最后,将第一次编译的 A.class 与第二次编译的 B.class 结合起来。之后,尝试运行任一类都会导致

Exception in thread "main" java.lang.ClassCircularityError: A
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

关于java - 如何重现 ClassCircularityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com