-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
None
-
generic
-
generic
-> class C {}
-> class D {C c;}
-> class C {D d;}
^- Infinite loop by cross reference - StackOverflowError:
Exception in thread "main" java.lang.StackOverflowError
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:156)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:93)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:87)
at jdk.internal.jshell.impl.TaskFactory$CompileTask.compile(TaskFactory.java:175)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:497)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:649)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:649)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:649)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
etc...
Test:
assertEval1("class C {}");
assertEval1("class D {C c;}");
assertEval1("class C {D d;}");
assertEval1("new D().c = new C()");
assertEval1("new C().d = new D()");
-> class D {C c;}
-> class C {D d;}
^- Infinite loop by cross reference - StackOverflowError:
Exception in thread "main" java.lang.StackOverflowError
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:156)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:93)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:87)
at jdk.internal.jshell.impl.TaskFactory$CompileTask.compile(TaskFactory.java:175)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:497)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:649)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:649)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
at jdk.internal.jshell.impl.Eval.declare(Eval.java:649)
at jdk.internal.jshell.impl.Eval.redeclareUpdates(Eval.java:780)
etc...
Test:
assertEval1("class C {}");
assertEval1("class D {C c;}");
assertEval1("class C {D d;}");
assertEval1("new D().c = new C()");
assertEval1("new C().d = new D()");
- duplicates
-
JDK-8137064 JShell API: circular dependencies cause infinite circular update
-
- Resolved
-
- relates to
-
JDK-8114837 JShell: forward references do not work with cross referenced annotation types.
-
- Closed
-