You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When running app in dev mode where source code is compiled in memory, binding service with @ImplementedBy will cause StackOverflowError, something like:
Caused by: java.lang.StackOverflowError
at java.lang.StringCoding.safeTrim(StringCoding.java:76)
at java.lang.StringCoding.access$300(StringCoding.java:50)
at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:305)
at java.lang.StringCoding.encode(StringCoding.java:344)
at java.lang.String.getBytes(String.java:916)
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.exists(File.java:813)
at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1080)
at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:1047)
at sun.misc.URLClassPath.findResource(URLClassPath.java:176)
at java.net.URLClassLoader$2.run(URLClassLoader.java:551)
at java.net.URLClassLoader$2.run(URLClassLoader.java:549)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:548)
at java.lang.ClassLoader.getResource(ClassLoader.java:1147)
at java.lang.ClassLoader.getResource(ClassLoader.java:1142)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1348)
at act.app.AppClassLoader.bytecode(AppClassLoader.java:264)
at act.app.AppClassLoader.enhancedBytecode(AppClassLoader.java:274)
at act.app.AppCompiler$2.findType(AppCompiler.java:151)
at act.app.AppCompiler$2.findType(AppCompiler.java:114)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createPackage(LookupEnvironment.java:756)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.buildTypeBindings(CompilationUnitScope.java:107)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.buildTypeBindings(LookupEnvironment.java:189)
at org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:723)
at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:383)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:428)
at act.app.AppCompiler.compile(AppCompiler.java:90)
at act.app.DevModeClassLoader.bytecodeFromSource(DevModeClassLoader.java:151)
at act.app.DevModeClassLoader.appBytecode(DevModeClassLoader.java:71)
at act.app.AppClassLoader.bytecode(AppClassLoader.java:259)
at act.app.AppClassLoader.enhancedBytecode(AppClassLoader.java:274)
at act.app.AppCompiler$2.findType(AppCompiler.java:151)
at act.app.AppCompiler$2.findType(AppCompiler.java:114)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:158)
at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:201)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:468)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:522)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:399)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:447)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:763)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:470)
at act.app.AppCompiler.compile(AppCompiler.java:90)
at act.app.DevModeClassLoader.bytecodeFromSource(DevModeClassLoader.java:151)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:447)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:763)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:470)
at act.app.AppCompiler.compile(AppCompiler.java:90)
at act.app.DevModeClassLoader.bytecodeFromSource(DevModeClassLoader.java:151)
at act.app.DevModeClassLoader.appBytecode(DevModeClassLoader.java:71)
at act.app.AppClassLoader.bytecode(AppClassLoader.java:259)
at act.app.AppClassLoader.enhancedBytecode(AppClassLoader.java:274)
at act.app.AppCompiler$2.findType(AppCompiler.java:151)
at act.app.AppCompiler$2.findType(AppCompiler.java:114)
This is an unknown issue of ActFramework. The workaround is not to use @ImplementedBy binding, instead use Linked binding.
When running app in dev mode where source code is compiled in memory, binding service with
@ImplementedBy
will causeStackOverflowError
, something like:This is an unknown issue of ActFramework. The workaround is not to use
@ImplementedBy
binding, instead use Linked binding.For example, suppose your service is:
And your implementation is:
Instead of annotating
FooService
with@ImplementedBy(FooServiceImpl.class)
, create a module to link them together:The text was updated successfully, but these errors were encountered: