首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenEJB NoClassDefFoundError

OpenEJB NoClassDefFoundError
EN

Stack Overflow用户
提问于 2017-05-25 19:18:18
回答 1查看 255关注 0票数 0

我在maven项目中有这样的依赖项。并使用OpenEJB测试EJB bean。

代码语言:javascript
复制
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>${jasperreports.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.openejb</groupId>
            <artifactId>openejb-junit</artifactId>
            <version>${openejb-junit.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

我对IReportService的测试

代码语言:javascript
复制
    @RunWith(EJBContainerRunner.class)
    public class ReportFacadeBeanTest {

        @EJB
        private IReportService iReportService;

        @Test
        public void testPrintReport() throws Exception {
            Asserts.assertNotNull(iReportService);

    }
}

当我尝试运行测试时出现错误

代码语言:javascript
复制
java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRDataSource

    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetPublicMethods(Class.java:2902)
    at java.lang.Class.getMethods(Class.java:1615)
    at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.processApplicationExceptions(AnnotationDeployer.java:2873)
    at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:2383)
    at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1819)
    at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:360)
    at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:403)
    at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:971)
    at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:364)
    at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:77)
    at org.apache.openejb.junit.jee.statement.StartingStatement.before(StartingStatement.java:96)
    at org.apache.openejb.junit.jee.statement.DecoratingStatement.evaluate(DecoratingStatement.java:30)
    at org.apache.openejb.junit.jee.statement.DecoratingStatement.evaluate(DecoratingStatement.java:32)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRDataSource
    at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:176)
    at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:80)
    ... 21 more

当我改变作用域时,所有工作都很好=(

如何使用scope - provided运行测试?我不想使用编译

EN

回答 1

Stack Overflow用户

发布于 2017-05-25 19:25:19

好吧..。如果无论您的应用程序在何处运行,net.sf.jasperreports都不可用,那么您必须

  • 从scope provided
  • Configure
    • 更改为可用

这当然取决于技术,因为每种技术都以自己的方式将库添加到运行时环境中。

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

https://stackoverflow.com/questions/44179270

复制
相关文章

相似问题

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