首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么jbehave插件会给我一个NoClassDefFoundError?

为什么jbehave插件会给我一个NoClassDefFoundError?
EN

Stack Overflow用户
提问于 2015-08-20 12:55:05
回答 1查看 1.7K关注 0票数 1

运行mvn integration-test -e com.example.mymodule时会出现以下错误

代码语言:javascript
复制
[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

当我运行mvn dependency:tree -pl com.example.mymodule | grep freemarker

代码语言:javascript
复制
[INFO] |  +- org.freemarker:freemarker:jar:2.3.19:compile

我使用javap来确认freemarker.ext.beans.BeansWrapper类存在于这个jar中:

代码语言:javascript
复制
javap -classpath C:\Users\CONOR2\.m2\repository\org\freemarker\freemarker\2.3.19\freemarker-2.3.19.jar freemarker.ext.beans.BeansWrapper

下面是我在pom.xml中的相关部分:

代码语言:javascript
复制
<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>

这是我的插件部分:

代码语言:javascript
复制
<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>

我在3.9.5和4.0.3版本中尝试了这一点,但这两个版本都有相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-04 13:00:19

事实证明,jbehave插件在log4j上遇到了麻烦。添加log4j:log4j和org.slf4j:slf4j-log4j作为插件的依赖项解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32118837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档