TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1352 2.83K
Как вызвать java.lang.ClassCircularityError в Java

JVM выбрасывает java.lang.ClassCircularityError, если при загрузке классов обнаруживает циклическую зависимость, например:

class A extends B {}
class B extends A {}


Такую ошибку можно спровоцировать, если скомпилировать классы в два этапа или сгенерировать их во время выполнения.

Пример через компиляцию:

Создаем три файла:

// A.java
public class A extends B {}
class B {}

// B.java
public class B extends A {}
class A {}

// Run.java
void main() {
new A();
}


Выполняем команды:

mkdir step{1..3}
javac -d step1 A.java
javac -d step2 B.java
cp step1/A.class step3/
cp step2/B.class step3/
rm A.java B.java
java --enable-preview -cp step3/ Run.java


На этапе запуска получите ошибку:

Exception in thread "main" java.lang.ClassCircularityError: A
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
...
at Run.main(Run.java:2)


👉 Java Portal
  • 👍 8
  • 🔥 1
More from @java_iibrary
  1. Oct 3, 2026💡 Предпочитайте делегирование наследованию: отношение «является» тесно связывает ваш клас…
  2. Oct 2, 2026🚀 Spring Boot 4: переименовано свойство преобразования исключений ✅ Было: spring.dao.exce…
  3. Oct 2, 2026Процесс ≠ Поток ≠ Виртуальный поток. Эти понятия часто путают, хотя они решают разные зада…
  4. Oct 1, 2026Когда Java-стектрейс оказался длиннее контекста ИИ 👀 👉 Java Portal
  5. Oct 1, 2026Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health…
  6. Sep 30, 2026Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпил…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →