Note that there are some explanatory texts on larger screens.

plurals
  1. POExtending groovy class causes run time exception when retrieving bean
    text
    copied!<p>I am having an issue trying to extend a groovy class. I have extended a groovy class that is loaded from a spring application context file by contructing the file path, registering the bean with Spring's BeanDefinitionRegistry, and then retrieving it from the application context.</p> <pre><code>private BeanDefinitionRegistry registry; </code></pre> <p>...</p> <pre><code> GenericBeanDefinition bd = new GenericBeanDefinition(); bd.setBeanClass(GroovyScriptFactory.class); bd.setAttribute( ScriptFactoryPostProcessor.REFRESH_CHECK_DELAY_ATTRIBUTE, refreshDelay); ConstructorArgumentValues cav = bd.getConstructorArgumentValues(); cav.addGenericArgumentValue(groovyLocation + WordUtils.capitalize(name) + ".groovy"); registry.registerBeanDefinition(name, bd); </code></pre> <p>...</p> <pre><code> // retrieve it ExternalObject engine = (ExternalObject) this.applicationContext .getBean(engineName); </code></pre> <p>This seems to work okay except when I extend a groovy class like so:</p> <p><strong>Cat.groovy:</strong></p> <pre><code>package com.mycomp.external.engine; import com.mycomp.external.ExternalObject; public class Cat extends ExternalObject { } </code></pre> <p><strong>Lion.groovy</strong></p> <pre><code>package com.mycomp.external.engine; public class Lion extends Cat { } </code></pre> <p>Then I get this completely awful mess of an error:</p> <pre><code>Lion: 4: unable to resolve class Cat @ line 4, column 1. public class Lion extends Cat { ^ 1 error at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:452) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at com.mycomp.external.ExternalAdFactoryImpl.getEngineByName(ExternalAdFactoryImpl.java:119) [adverter-1.9.0-SNAPSHOT.jar:na] at com.mycomp.external.BasicEngineTest.getEngine(BasicEngineTest.java:62) [test-classes/:na] at com.mycomp.external.BasicEngineTest.realModeGet(BasicEngineTest.java:108) [test-classes/:na] at com.mycomp.external.BasicEngineTest.testMany(BasicEngineTest.java:123) [test-classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_37] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_37] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_37] at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_37] at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:76) [testng-6.0.1.jar:na] at org.testng.internal.MethodInvocationHelper$1.runTestMethod(MethodInvocationHelper.java:178) [testng-6.0.1.jar:na] at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.run(AbstractTestNGSpringContextTests.java:158) [spring-test-3.0.5.RELEASE.jar:3.0.5.RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_37] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_37] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_37] at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_37] at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:191) [testng-6.0.1.jar:na] at org.testng.internal.Invoker.invokeMethod(Invoker.java:666) [testng-6.0.1.jar:na] at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:846) [testng-6.0.1.jar:na] at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1170) [testng-6.0.1.jar:na] at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) [testng-6.0.1.jar:na] at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) [testng-6.0.1.jar:na] at org.testng.TestRunner.runWorkers(TestRunner.java:1147) [testng-6.0.1.jar:na] at org.testng.TestRunner.privateRun(TestRunner.java:749) [testng-6.0.1.jar:na] at org.testng.TestRunner.run(TestRunner.java:600) [testng-6.0.1.jar:na] at org.testng.SuiteRunner.runTest(SuiteRunner.java:317) [testng-6.0.1.jar:na] at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:312) [testng-6.0.1.jar:na] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:274) [testng-6.0.1.jar:na] at org.testng.SuiteRunner.run(SuiteRunner.java:223) [testng-6.0.1.jar:na] at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) [testng-6.0.1.jar:na] at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) [testng-6.0.1.jar:na] at org.testng.TestNG.runSuitesSequentially(TestNG.java:1039) [testng-6.0.1.jar:na] at org.testng.TestNG.runSuitesLocally(TestNG.java:964) [testng-6.0.1.jar:na] at org.testng.TestNG.run(TestNG.java:900) [testng-6.0.1.jar:na] at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:70) [surefire-testng-2.8.1.jar:2.8.1] at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:102) [surefire-testng-2.8.1.jar:2.8.1] at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:114) [surefire-testng-2.8.1.jar:2.8.1] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_37] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_37] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_37] at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_37] at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) [surefire-booter-2.8.1.jar:2.8.1] at $Proxy0.invoke(Unknown Source) [na:na] at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) [surefire-booter-2.8.1.jar:2.8.1] at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) [surefire-booter-2.8.1.jar:2.8.1] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) [surefire-booter-2.8.1.jar:2.8.1] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Lion': Could not determine scripted object type for GroovyScriptFactory: script source locator [file:///Users/jkramer/source/backend/backend/config/../feeds/src/main/groovy/com/mycomp/external/engine/Lion.groovy]; nested exception is org.springframework.scripting.ScriptCompilationException: Could not compile script; nested exception is org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Lion: 4: unable to resolve class Cat @ line 4, column 1. public class Lion extends Cat { ^ 1 error at org.springframework.scripting.support.ScriptFactoryPostProcessor.postProcessBeforeInstantiation(ScriptFactoryPostProcessor.java:297) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:848) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:820) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:446) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] ... 50 common frames omitted Caused by: org.springframework.scripting.ScriptCompilationException: Could not compile script; nested exception is org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Lion: 4: unable to resolve class Cat @ line 4, column 1. public class Lion extends Cat { ^ 1 error at org.springframework.scripting.groovy.GroovyScriptFactory.getScriptedObjectType(GroovyScriptFactory.java:217) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.scripting.support.ScriptFactoryPostProcessor.postProcessBeforeInstantiation(ScriptFactoryPostProcessor.java:290) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] ... 53 common frames omitted Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Lion: 4: unable to resolve class Cat @ line 4, column 1. public class Lion extends Cat { ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302) [groovy-all-1.8.0.jar:1.8.0] at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:854) [groovy-all-1.8.0.jar:1.8.0] at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:544) [groovy-all-1.8.0.jar:1.8.0] at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:493) [groovy-all-1.8.0.jar:1.8.0] at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306) [groovy-all-1.8.0.jar:1.8.0] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287) [groovy-all-1.8.0.jar:1.8.0] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267) [groovy-all-1.8.0.jar:1.8.0] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:214) [groovy-all-1.8.0.jar:1.8.0] at org.springframework.scripting.groovy.GroovyScriptFactory.getScriptedObjectType(GroovyScriptFactory.java:201) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE] ... 54 common frames omitted 17:26:54.942 [Hector.me.prettyprint.cassandra.connection.CassandraHostRetryService-1] INFO m.p.c.c.CassandraHostRetryService - Not checking that 10.10.0.111(10.10.0.111):9160 is a member of the ring since there are no live hosts </code></pre> <p>Any help would be appreciated!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload