Hi Erik,

Format is an abstract class but you normally instatiate the concrete subclasses, as in the example.

I'm not sure what the root of your problem is, but it seems unlike to be as you describe, as we currently use 3.1.1 with that configuration in the JBehave examples (AnnotatedEmbedderUsingSpring in the trader-spring-example) and they don't show this problem.

Could you sent us a sample project reproducing your issue so we can help you?

Cheers

On 21/10/2012 21:56, Erik Pragt wrote:
Hi all,

I'm running into some annoying issue, which I have a hard time fixing. At the moment, I worked around the issue, but I'd like to properly fix it. In my JBehave tests, I'm currently getting the following error:

2012-10-21 21:47:48,481 DEBUG [main] TypeConverterDelegate#convertIfNecessary - Construction via String failed for type [org.jbehave.core.reporters.Format] org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.jbehave.core.reporters.Format]: Is it an abstract class?; nested exception is java.lang.InstantiationException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:150)

This is caused by the following lines of XML configuration:

<bean class="org.jbehave.core.configuration.spring.SpringStoryReporterBuilder" init-method="withDefaultFormats">
        <property name="formats">
            <list>
                <value>CONSOLE</value>
                <value>TXT</value>
                <value>HTML</value>
                <value>XML</value>
            </list>
        </property>
    </bean>

I'm currently having a hard time figuring out how to fix this, and any suggestions would be appreciated!

My current dependency tree looks like this:

[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ epub-organizer-integration-test ---
[INFO] epub-organizer:epub-organizer-integration-test:jar:1.0
[INFO] +- epub-organizer:epub-organizer-services:jar:1.0:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.6.0:compile
[INFO] |  +- org.springframework:spring-core:jar:3.1.2.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-asm:jar:3.1.2.RELEASE:compile
[INFO] |  |  \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] |  +- org.springframework:spring-beans:jar:3.1.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:3.1.2.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-aop:jar:3.1.2.RELEASE:compile
[INFO] | | \- org.springframework:spring-expression:jar:3.1.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-orm:jar:3.1.2.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:3.1.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-tx:jar:3.1.2.RELEASE:compile
[INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] | +- org.springframework.data:spring-data-jpa:jar:1.1.2.RELEASE:compile [INFO] | | +- org.springframework.data:spring-data-commons-core:jar:1.3.2.RELEASE:compile
[INFO] |  |  +- org.slf4j:jcl-over-slf4j:jar:1.6.1:runtime
[INFO] |  |  \- org.aspectj:aspectjrt:jar:1.6.12:compile
[INFO] |  +- org.hibernate:hibernate-core:jar:4.1.6.Final:compile
[INFO] |  |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile
[INFO] | | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile
[INFO] |  |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
[INFO] |  |  +- org.javassist:javassist:jar:3.15.0-GA:compile
[INFO] | | \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile
[INFO] |  +- org.hibernate:hibernate-entitymanager:jar:4.1.6.Final:compile
[INFO] | +- org.hibernate:hibernate-validator-annotation-processor:jar:4.3.0.Final:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:4.3.0.Final:compile
[INFO] |  +- org.hsqldb:hsqldb:jar:2.2.8:compile
[INFO] |  +- commons-dbcp:commons-dbcp:jar:1.3:compile
[INFO] |  |  \- commons-pool:commons-pool:jar:1.5.4:compile
[INFO] |  +- joda-time:joda-time:jar:2.1:compile
[INFO] |  +- javax.validation:validation-api:jar:1.0.0.GA:compile
[INFO] |  +- com.googlecode.flyway:flyway-core:jar:1.7:compile
[INFO] |  \- mysql:mysql-connector-java:jar:5.1.21:compile
[INFO] +- org.jbehave:jbehave-core:jar:4.0-beta-1:compile
[INFO] |  +- junit:junit-dep:jar:4.8.2:compile
[INFO] |  +- org.hamcrest:hamcrest-core:jar:1.1:compile
[INFO] |  +- org.hamcrest:hamcrest-library:jar:1.1:compile
[INFO] |  +- org.hamcrest:hamcrest-integration:jar:1.1:compile
[INFO] |  +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] |  +- commons-io:commons-io:jar:1.4:compile
[INFO] | +- commons-lang:commons-lang:jar:2.6:compile (version managed from 2.5)
[INFO] |  +- org.codehaus.plexus:plexus-utils:jar:2.0.5:compile
[INFO] |  +- org.freemarker:freemarker:jar:2.3.16:compile
[INFO] |  +- com.thoughtworks.paranamer:paranamer:jar:2.4:compile
[INFO] |  \- com.thoughtworks.xstream:xstream:jar:1.3.1:compile
[INFO] |     \- xpp3:xpp3_min:jar:1.1.4c:compile
[INFO] +- org.jbehave:jbehave-spring:jar:4.0-beta-1:compile
[INFO] \- org.springframework:spring-test:jar:3.1.2.RELEASE:test

And my complete stacktrace like this:

2012-10-21 21:47:48,481 DEBUG [main] TypeConverterDelegate#convertIfNecessary - Construction via String failed for type [org.jbehave.core.reporters.Format] org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.jbehave.core.reporters.Format]: Is it an abstract class?; nested exception is java.lang.InstantiationException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:150) at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:198) at org.springframework.beans.TypeConverterDelegate.convertToTypedCollection(TypeConverterDelegate.java:541) at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:179) at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:470) at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:516) at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:510) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1406) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1365) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469) at org.jbehave.core.steps.spring.SpringApplicationContextFactory.createApplicationContext(SpringApplicationContextFactory.java:72) at org.jbehave.core.configuration.spring.SpringAnnotationBuilder.createApplicationContext(SpringAnnotationBuilder.java:105) at org.jbehave.core.configuration.spring.SpringAnnotationBuilder.buildConfiguration(SpringAnnotationBuilder.java:47) at org.jbehave.core.configuration.AnnotationBuilder.buildEmbedder(AnnotationBuilder.java:176) at org.jbehave.core.configuration.AnnotationBuilder.embeddableInstance(AnnotationBuilder.java:269) at org.jbehave.core.junit.AnnotatedEmbedderRunner.createTest(AnnotatedEmbedderRunner.java:20) at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:258) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:255) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
... 45 more
2012-10-21 21:47:48,491 DEBUG [main] AbstractAutowireCapableBeanFactory#invokeCustomInitMethod - Invoking init method 'withDefaultFormats' on bean with name 'org.jbehave.core.configuration.spring.SpringStoryReporterBuilder#0'

Thanks for any help,

Kind regards,

Erik Pragt

Reply via email to