As you have correctly identified in the pom, it's the logging libraries
which are the issue. If you exclude them from the pom-level
dependencies it works.
This points to a classloading problem. Maven (2&3) can be rather fussy
with classloading.
One workaround is to declare the logging dependencies at plugin-level
for jbehave-maven-plugin:
<plugin>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-maven-plugin</artifactId>
<version>3.9.5</version>
<executions>
<execution>
<id>unpack-view-resources</id>
<phase>process-resources</phase>
<goals>
<goal>unpack-view-resources</goal>
</goals>
</execution>
<execution>
<id>embeddable-stories</id>
<phase>integration-test</phase>
<configuration>
<includes>
<include>com/example/TheStories.java</include>
</includes>
<excludes />
<ignoreFailureInStories>true</ignoreFailureInStories>
<ignoreFailureInView>false</ignoreFailureInView>
<scope>test</scope>
<threads>1</threads>
<metaFilters>
<metaFilter></metaFilter>
</metaFilters>
</configuration>
<goals>
<goal>run-stories-as-embeddables</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependencies>
</plugin>
You can still keep the same dependencies at pom-level if you need to.
On 20/08/2015 20:05, Thomas Norton wrote:
I created a simple git repository that reproduces the issue:
https://github.com/conor2/jbehave-class-setup-problem
On Thursday, August 20, 2015 at 11:58:28 AM UTC-4, mauro.talevi wrote:
No, the error is: "Could not initialize class
freemarker.ext.beans.BeansWrapper"
The problem is not that the class is not found, but that it's not
able to initialise it due to static loading.
I know by experience that it can be due to classpath conflicts of
log-related libraries, e.g.
http://www.slf4j.org/codes.html#log4jDelegationLoop
<http://www.slf4j.org/codes.html#log4jDelegationLoop>.
You need to get the bottom of the stack trace or debug it to see
what the issue is.
If you provide a working maven project on Github that reproduced
the issue, we can help.
On 20/08/2015 16:47, Thomas Norton wrote:
The error deals with freemarker classes not being found, despite
the freemarker jar being in the dependency tree. The maven stack
trace says nothing about SLF4J or other logging frameworks.
Tom
On Thursday, August 20, 2015 at 10:40:03 AM UTC-4, mauro.talevi
wrote:
This is typically due to some static loading issue with some
logging library.
You should check for the root cause and verify if it's one of
these:
http://www.slf4j.org/codes.html <http://www.slf4j.org/codes.html>
You should try to inspect the maven dependency tree to see
what gets resolved to the classpath.
On 20/08/2015 14:39, Thomas Norton wrote:
I get the following error when I run /mvn integration-test
-e com.example.mymodule/:
[ERROR] Failed to execute goal
org.jbehave:jbehave-maven-plugin:3.9.5:run-stories-as-embeddables
(embeddable-stories) on project com.example.mymodule: Failed
to run stories as embeddables: Failure in running
embeddable: com.example.mymodule.TheStories: Could not
initialize class freemarker.ext.beans.BeansWrapper -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException:
Failed to execute goal
org.jbehave:jbehave-maven-plugin:3.9.5:run-stories-as-embeddables
(embeddable-stories) on project com.example.mymodule: Failed
to run stories as embeddables
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoFailureException:
Failed to run stories as embeddables
at
org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:20)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by:
org.jbehave.core.embedder.Embedder$RunningEmbeddablesFailed:
Failure in running embeddable: com.example.mymodule.TheStories
at
org.jbehave.core.embedder.Embedder.runAsEmbeddables(Embedder.java:130)
at
org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:18)
... 21 more
Caused by: java.lang.NoClassDefFoundError: Could not
initialize class freemarker.ext.beans.BeansWrapper
at
freemarker.template.ObjectWrapper.<clinit>(ObjectWrapper.java:69)
at
freemarker.core.Configurable.<init>(Configurable.java:139)
at
freemarker.template.Configuration.<init>(Configuration.java:142)
at
freemarker.template.Configuration.<clinit>(Configuration.java:127)
at
org.jbehave.core.reporters.FreemarkerProcessor.configuration(FreemarkerProcessor.java:30)
at
org.jbehave.core.reporters.FreemarkerProcessor.process(FreemarkerProcessor.java:21)
at
org.jbehave.core.reporters.TemplateableViewGenerator.write(TemplateableViewGenerator.java:267)
at
org.jbehave.core.reporters.TemplateableViewGenerator.createReports(TemplateableViewGenerator.java:219)
at
org.jbehave.core.reporters.TemplateableViewGenerator.generateReportsView(TemplateableViewGenerator.java:110)
at
org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:249)
at
org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:237)
at
org.jbehave.core.embedder.Embedder.runStoriesAsPaths(Embedder.java:213)
at
org.jbehave.core.junit.JUnitStories.run(JUnitStories.java:20)
at
org.jbehave.core.embedder.Embedder.runAsEmbeddables(Embedder.java:121)
... 22 more
When I run /mvn dependency:tree -pl com.example.mymodule |
grep freemarker/
I get /[INFO] | +-
org.freemarker:freemarker:jar:2.3.19:compile/
I used /javap/ to confirm that the class
/freemarker.ext.beans.BeansWrapper/ exists in this jar:
/javap -classpath
C:\Users\CONOR2\.m2\repository\org\freemarker\freemarker\2.3.19\freemarker-2.3.19.jar
freemarker.ext.beans.BeansWrapper/
Here's the relevant portion of my depdendencies from my pom.xml:
<dependency>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-core</artifactId>
<version>3.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-core</artifactId>
<version>3.9.5</version>
<classifier>resources</classifier>
<type>zip</type>
</dependency>
<dependency>
<groupId>org.jbehave.site</groupId>
<artifactId>jbehave-site-resources</artifactId>
<version>3.2</version>
<type>zip</type>
</dependency>
Here's my plugin section:
<plugin>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-maven-plugin</artifactId>
<version>3.9.5</version>
<executions>
<execution>
<id>unpack-view-resources</id>
<phase>process-resources</phase>
<goals>
<goal>unpack-view-resources</goal>
</goals>
</execution>
<execution>
<id>embeddable-stories</id>
<phase>integration-test</phase>
<configuration>
<includes>
<include>com/example/mymodule/TheStories.java</include>
</includes>
<excludes />
<ignoreFailureInStories>true</ignoreFailureInStories>
<ignoreFailureInView>false</ignoreFailureInView>
<scope>test</scope>
<threads>1</threads>
<metaFilters>
<metaFilter></metaFilter>
</metaFilters>
</configuration>
<goals>
<goal>run-stories-as-embeddables</goal>
</goals>
</execution>
</executions>
</plugin>
I tried this with versions 3.9.5 and 4.0.3, but I get the
same error with both versions.
--
You received this message because you are subscribed to the
Google Groups "JBehave User" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web, visit
https://groups.google.com/d/msgid/jbehave-user/81004452-fcc9-4b18-a7c1-8cbadf4733f3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the
Google Groups "JBehave User" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected] <javascript:>.
To post to this group, send email to [email protected]
<javascript:>.
To view this discussion on the web, visit
https://groups.google.com/d/msgid/jbehave-user/ac6d2b1b-2a6c-482f-a221-9f70665e00b3%40googlegroups.com
<https://groups.google.com/d/msgid/jbehave-user/ac6d2b1b-2a6c-482f-a221-9f70665e00b3%40googlegroups.com>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google
Groups "JBehave User" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
To view this discussion on the web, visit
https://groups.google.com/d/msgid/jbehave-user/04927602-5707-4d2c-87cc-13dbe24dc1b6%40googlegroups.com
<https://groups.google.com/d/msgid/jbehave-user/04927602-5707-4d2c-87cc-13dbe24dc1b6%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "JBehave
User" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send an email to [email protected].
To view this discussion on the web, visit
https://groups.google.com/d/msgid/jbehave-user/55D62A93.3000006%40aquilonia.org.
For more options, visit https://groups.google.com/d/optout.