java - IDEA 官方指南中的 arquillian 运行时问题

标签 java glassfish jboss-arquillian

我严格按照IDEA官方指南(https://www.jetbrains.com/help/idea/arquillian-a-quick-start-guide.html)中的步骤一一进行。 enter image description here 所有maven依赖项都是正确的,并且依赖项的版本与文章提到的完全相同。没有编译问题。但是当我尝试在嵌入式容器中运行示例代码时(我使用指南提到的 GlassFish Embedded 3.1),我遇到了运行时问题:

*java.lang.RuntimeException: Could not create new instance of class org.jboss.arquillian.test.impl.EventTestRunnerAdaptor
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:165)
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:102)
    at org.jboss.arquillian.test.spi.TestRunnerAdaptorBuilder.build(TestRunnerAdaptorBuilder.java:52)
    at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:113)
    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:47)
    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.reflect.InvocationTargetException
    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.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:161)
    ... 8 more
Caused by: java.lang.NoClassDefFoundError: org/glassfish/embeddable/GlassFishException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.getDeclaredConstructor(Class.java:2178)
    at org.jboss.arquillian.core.impl.loadable.SecurityActions$2.run(SecurityActions.java:192)
    at org.jboss.arquillian.core.impl.loadable.SecurityActions$2.run(SecurityActions.java:189)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.jboss.arquillian.core.impl.loadable.SecurityActions.getConstructor(SecurityActions.java:188)
    at org.jboss.arquillian.core.impl.loadable.SecurityActions.newInstance(SecurityActions.java:157)
    at org.jboss.arquillian.core.impl.loadable.ServiceRegistryLoader.createServiceInstance(ServiceRegistryLoader.java:103)
    at org.jboss.arquillian.core.impl.loadable.ServiceRegistryLoader.all(ServiceRegistryLoader.java:55)
    at org.jboss.arquillian.core.impl.loadable.ServiceRegistryLoader.onlyOne(ServiceRegistryLoader.java:67)
    at org.jboss.arquillian.container.impl.client.container.ContainerRegistryCreator.createRegistry(ContainerRegistryCreator.java:99)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
    at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
    at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
    at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
    at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
    at org.jboss.arquillian.core.impl.ManagerImpl.bindAndFire(ManagerImpl.java:265)
    at org.jboss.arquillian.core.impl.InstanceImpl.set(InstanceImpl.java:74)
    at org.jboss.arquillian.config.impl.extension.ConfigurationRegistrar.loadConfiguration(ConfigurationRegistrar.java:73)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
    at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
    at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
    at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
    at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
    at org.jboss.arquillian.core.impl.ManagerImpl.start(ManagerImpl.java:290)
    at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.<init>(EventTestRunnerAdaptor.java:63)
    ... 13 more
Caused by: java.lang.ClassNotFoundException: org.glassfish.embeddable.GlassFishException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

    ... 49 more*

有人指出问题出在哪里吗?有人尝试这个并遵循该指南吗?提前致谢!如有任何帮助,我们将不胜感激!

最佳答案

就我在示例中看到的情况而言,他们正在使用托管工件,而您正在尝试嵌入工件,因此我建议打开 pom.xml 并添加嵌入式工件(Arquillian 工件和 Glassfish 工件)以使其能够运行。

https://docs.jboss.org/author/display/ARQ/GlassFish+3.1+-+Embedded

此外,如果您想要定义容器的新方法,请使用 Chameleon (https://github.com/arquillian/arquillian-container-chameleon),当然两者都可以,但后面一个更容易。

关于java - IDEA 官方指南中的 arquillian 运行时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49042927/

相关文章:

java - 抛出异常时 IT 测试不会失败 Arquillian TestNG maven

java - Firebase 获取 child 的 child 的引用

java - Spock-忽略子类的规范方法

java - JVM 垃圾回收问题

java - 连接到 glassFish 服务器上的 JNDI 时出现 NoInitialContextException

GlassFish:如何设置 Access-Control-Allow-Origin header

java - 将 Arquillian 测试与 Google App Engine (GAE) 结合使用

java - Graphite 烯抽象 - 断言的最佳实践

java - @AuthenticationPrincipal 抛出异常

java - 在 CloudBees 上部署 NetBeans JAXWS