【问题标题】:How can I avoid ClassNotFoundException for Arquillian-Tests running in a remote Glassfish (embedded Glassfish works)?如何避免在远程 Glassfish 中运行的 Arquillian-Tests 的 ClassNotFoundException(嵌入式 Glassfish 工作)?
【发布时间】:2012-11-30 05:12:10
【问题描述】:

我在 Glassfish 环境中使用 Arquillian[1] 对我的代码进行单元测试。

我已将测试设置为在 glassfish 嵌入式环境中运行时可以正常工作。但是当我尝试在 remote-Glassfish-environment 中执行测试时,找不到 maven-Dependencies:

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lorg/springframework/data/neo4j/support/Neo4jTemplate;

我的 ShrinkWrap 测试结果:

@Deployment
public static WebArchive createDeployment() {
    return ShrinkWrap.create(WebArchive.class).addPackages(true, "main.java")
            .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
}

要解决 maven 依赖项,我使用的是 shrinkwrap-resolver-bom:shrinkwrap-resolver-bom - 在远程环境中运行测试时,在我看来 maven 依赖项不在类路径中。

我已将我的 pom.xml 上传到http://pastxt.com/P/9400A0KQSC

如何让我的测试在 Glassfish-remote-environment 中运行?

[1]http://arquillian.org/

【问题讨论】:

    标签: maven glassfish dependencies classpath jboss-arquillian


    【解决方案1】:

    在您的 POM 中拥有 ShrinkWrap Resolver BOM 不足以启用 Arquillian 定位并将 Maven 工件添加到您的部署中。 Maven BOM(物料清单)仅仅是a container for related dependencies。

    要使用 BOM,您需要将 BOM 导入到项目 POm 的 dependencyManagement 部分,并添加所需的依赖项。要添加 ShrinkWrap Maven 解析器,您需要添加 shrinkwrap-resolver-depchain 测试依赖项。

    您需要使用 Maven 解析器来解析您需要的依赖项,然后将解析的工件添加到您的 ShrinkWrap 存档中。有关使用更新的 ShrinkWrap Maven 解析器 (2.x) 的更多详细信息,请参见 community FAQ post。请注意,Arquillian BOM (

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多