当前位置: 首页 > 知识库问答 >
问题:

收缩包装Maven-解析器

侯涵煦
2023-03-14

我正在使用Shrinkwrap解析DAO中的.xml

@Deployment
public static Archive<?> createDeployment()
{
    File[] files = Maven.resolver().resolve("mysql:mysql-connector-java:8.0.11").withTransitivity().asFile();
    return ShrinkWrap.create(WebArchive.class, "morphological-analysis-data-access-object-test.war")
            .addPackages(true,"com.root")
            .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
            .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
            .addAsLibraries(files);
}

我在测试中得到2个错误:

java.lang.NoClassDefoundError

而且

java.lang.RuntimeException:无法调用部署方法

我有一些DAO测试在工作,但是当a继续编写剩余的测试时,这个错误开始了,并且影响了我正在编写的测试和之前正常的测试。

我更改了一些内容:我使用了.addClass,而不是添加了一百万个.addPackages

我最好的猜测是我也需要解析我的.iml。这有道理吗?

完成堆栈跟踪:

noClassDefoundError:lbr/com/cpmh/untitled/analysis/spine/benzelpolygonanalysis;

at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredFields(Class.java:1916)
at org.junit.runners.model.TestClass.getSortedDeclaredFields(TestClass.java:77)
at org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:70)
at org.junit.runners.model.TestClass.<init>(TestClass.java:57)
at org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:83)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
at org.jboss.arquillian.junit.Arquillian.<init>(Arquillian.java:58)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:61)
at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:139)
at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:117)
at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1514)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1514)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1514)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1514)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1514)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1349)
at java.lang.Thread.run(Thread.java:748)

原因:java.lang.ClassNotFoundException:br.com.cpmh.untitled.analysis.spine.BenzelPolygonAnalysis来自[Module“deployment.morphologic-analysis-data-access-object-test.war”from Service Module Loader](位于org.jboss.modules.moduleClassLoader.findClass(moduleClassLoader.java:255)(位于org.jboss.modules.concurrentClassLoader.performLoadClass)

共有1个答案

逄嘉木
2023-03-14

如果您用.addpackages(true,“com.root”)加载您的类,那么该包中的所有内容都将被递归加载,包括子包。在Arquillian正在创建的战争中,您似乎没有类br.com.cpmh.unttled.analysis.spine.BenzelPolygonAnalysis。可能您缺少了包br.com.cpmh的另一个addpackages

您应该检查war文件是否正确创建。这有两种方法。您可以在arquillian.xml中使用以下属性:

<engine>
   <property name="deploymentExportPath">target/deployments</property>
</engine>

或者您可以这样修改@deployment方法:

@Deployment
public static Archive<?> createDeployment()
{
    File[] files = Maven.resolver().resolve("mysql:mysql-connector-java:8.0.11").withTransitivity().asFile();
    WebArchive archive =ShrinkWrap.create(WebArchive.class, "morphological-analysis-data-access-object-test.war")
        .addPackages(true,"com.root")
        .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
        .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
        .addAsLibraries(files);
    archive.as(ZipExporter.class).exportTo(new File("/" + archive.getName()), true);
    return archive;
}
 类似资料:
  • 问题内容: 签入node_module是社区标准,但现在我们也可以选择使用wrapwrap。后者对我来说更有意义,但是总会有人进行“强制发布”并引入错误。还有其他缺点吗? 问题答案: 我最喜欢的关于这个主题的文章/哲学可以追溯到2011年(在node.js领域很长一段时间): https://web.archive.org/web/20150116024411/http://www.futurea

  • 假设网格布局如下: null null 我想‘收缩包装’网格项,这样 1)网格的最大宽度将仅与内容一样宽,但 2)如果没有足够的空间容纳内容-项目将相应地包装。 在上面的演示中,第一个约束失败了--网格列伸展以适应它们各自的内容,并且所有额外的视口宽度在列之间平分(添加)。 Codepen演示-(调整大小看看我在说什么) 我尝试了几种方法来解决这一问题,但它们都将网格项“收缩包装”成与实际网格本身

  • 问题内容: 最近,我尝试使用Yarn安装Node软件包。它运作良好,并且比NPM快得多。纱线自动生成。我们已经有NPM收缩包装()。 它们之间有什么区别吗?是否有过NPM-shrinkwrap.json什么优势? 问题答案: 该文件与其他程序包管理器的锁定文件非常相似,尤其是Rust的Cargo程序包管理器具有。这些锁定文件的想法是代表一组始终有效的软件包。 将依赖关系范围存储在文件中,这意味着当

  • 问题内容: 我试图弄清楚flexbox的工作原理(理应工作吗?),如下所示: 问题是,当有足够的空间容纳元素时,我会得到一个很好的紧身儿童,它们之间的间距均匀。(第一,顶部div块) 但是,如果没有足够的空间并且儿童中的文字开始换行,则所有内容都会朝着怪异的方向前进- 儿童不再紧密贴合,即使在换行后,flex子童周围也有足够的空间,因为不再合适,实际上环绕操作实际上也没有机会工作(第二个div块)

  • 问题内容: 我已经从http://mirrors.ibiblio.org/pub/mirrors/maven2/dot-index/nexus-maven- repository-index.gz 下载了为Maven Central生成的索引。 我想列出这些索引文件(例如groupId,artifactId,版本)中的工件信息。我读过有一个高级API。看来我必须使用以下Maven依赖项。但是,我不

  • 问题内容: 我有几行要在行中居中放置的inline-block元素,我想水平居中。内联块元素都具有相同的固定大小,但我希望居中处理页面大小调整以及添加或删除元素。 为了简化起见,我删除了html /css并删除了居中的尝试。 如果您调整结果窗口的大小,以便第三个内联块元素下降,则容器将填充宽度,我们将得到以下结果: 而不是这样: 根据ptriek关于JavaScript解决方案的答案进行编辑: P