TestNG fails with ClassNotFoundException on JBoss 7.1.1.Final
dkrizic Aug 24, 2012 6:30 PMHi,
I have a smal test project with an Interface
{code}
package com.prodyna.demo.calculator;
import javax.ejb.Local;
@Local
public interface Calculator {
public abstract int add(int a, int b);
}
{code}
and an implementation
{code}
package com.prodyna.demo.calculator;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Stateless
@LocalBean
public class CalculatorBean implements Calculator {
private Logger log = LoggerFactory.getLogger( getClass() );
@Override
public int add( int a, int b ) {
log.info("Calculating " + a + "+" + b );
return a + b;
}
}
{code}
testing with
{code}
package com.prodyna.demo.calculator;
import static org.junit.Assert.assertEquals;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.testng.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.testng.annotations.Test;
// @RunWith(Arquillian.class)
public class CalculatorBeanTest extends Arquillian {
@Deployment
public static Archive<?> createDeployment() {
JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar");
jar.addClass(Calculator.class);
jar.addClass(CalculatorBean.class);
jar.addClass(CalculatorBeanTest.class);
jar.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
return jar;
}
@Inject
private Calculator calculator;
@Test
public void add1() {
assertEquals(10, calculator.add(2, 8));
}
}
{code}
With JUnit everything works (arquillian-junit-container, junit), but not by switching to TestNG (arquillian-testng-container, tstng), some imports changed. The Exception is:
{code}
00:19:59,590 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-4) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080
00:19:59,897 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) JBAS015012: Started FileSystemDeploymentService for directory /Users/dkrizic/Runtime/jboss/standalone/deployments
00:19:59,905 INFO [org.jboss.as.remoting] (MSC service thread 1-7) JBAS017100: Listening on /127.0.0.1:9999
00:19:59,906 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on /127.0.0.1:4447
00:20:00,074 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-5) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
00:20:00,093 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
00:20:00,094 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss AS 7.1.1.Final "Brontes" started in 2934ms - Started 133 of 208 services (74 services are passive or on-demand)
00:20:18,733 INFO [org.jboss.as.repository] (management-handler-thread - 1) JBAS014900: Content added at location /Users/dkrizic/Runtime/jboss/standalone/data/content/85/d5c8a22f34ce48a235a2d61f3714ff7b68553c/content
00:20:18,755 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of "arquillian-service"
00:20:19,305 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) JBAS018567: Deployment "deployment.arquillian-service" is using a private module ("org.jboss.as.jmx:main") which may be changed or removed in future versions without notice.
00:20:19,306 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) JBAS018567: Deployment "deployment.arquillian-service" is using a private module ("org.jboss.as.server:main") which may be changed or removed in future versions without notice.
00:20:19,307 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) JBAS018567: Deployment "deployment.arquillian-service" is using a private module ("org.jboss.as.osgi:main") which may be changed or removed in future versions without notice.
00:20:19,309 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) JBAS018567: Deployment "deployment.arquillian-service" is using a private module ("org.jboss.jandex:main") which may be changed or removed in future versions without notice.
00:20:19,310 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) JBAS018567: Deployment "deployment.arquillian-service" is using a private module ("org.jboss.osgi.framework:main") which may be changed or removed in future versions without notice.
00:20:19,438 INFO [org.jboss.as.server] (management-handler-thread - 1) JBAS018559: Deployed "arquillian-service"
00:20:19,982 INFO [org.jboss.as.repository] (management-handler-thread - 2) JBAS014900: Content added at location /Users/dkrizic/Runtime/jboss/standalone/data/content/80/52405ad4245f9de40b281a5e4d0dffc86b518a/content
00:20:19,989 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876: Starting deployment of "test.jar"
00:20:20,074 INFO [org.jboss.weld.deployer] (MSC service thread 1-7) JBAS016002: Processing weld deployment test.jar
00:20:20,083 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-7) JNDI bindings for session bean named CalculatorBean in deployment unit deployment "test.jar" are as follows:
java:global/test/CalculatorBean!com.prodyna.demo.calculator.Calculator
java:app/test/CalculatorBean!com.prodyna.demo.calculator.Calculator
java:module/CalculatorBean!com.prodyna.demo.calculator.Calculator
java:global/test/CalculatorBean!com.prodyna.demo.calculator.CalculatorBean
java:app/test/CalculatorBean!com.prodyna.demo.calculator.CalculatorBean
java:module/CalculatorBean!com.prodyna.demo.calculator.CalculatorBean
00:20:20,189 INFO [org.jboss.weld.deployer] (MSC service thread 1-7) JBAS016005: Starting Services for CDI deployment: test.jar
00:20:20,274 INFO [org.jboss.weld.Version] (MSC service thread 1-7) WELD-000900 1.1.5 (AS71)
00:20:20,293 INFO [org.jboss.weld.deployer] (MSC service thread 1-4) JBAS016008: Starting weld service for deployment test.jar
00:20:20,333 INFO [org.jboss.as.arquillian] (MSC service thread 1-7) Arquillian deployment detected: ArquillianConfig[service=jboss.arquillian.config."test.jar",unit=test.jar,tests=[com.prodyna.demo.calculator.CalculatorBeanTest]]
00:20:20,848 INFO [org.jboss.as.server] (management-handler-thread - 2) JBAS018559: Deployed "test.jar"
00:20:21,118 SEVERE [org.jboss.arquillian.protocol.jmx.JMXTestRunner] (pool-4-thread-1) Failed: com.prodyna.demo.calculator.CalculatorBeanTest.add1: org.testng.TestNGException: java.lang.ClassNotFoundException: com.prodyna.demo.calculator.CalculatorBeanTest from [Module "deployment.arquillian-service:main" from Service Module Loader]
at org.testng.internal.XmlMethodSelector.checkMethod(XmlMethodSelector.java:252) [arquillian-service:]
at org.testng.internal.XmlMethodSelector.setXmlClasses(XmlMethodSelector.java:263) [arquillian-service:]
at org.testng.TestRunner.initRunInfo(TestRunner.java:378) [arquillian-service:]
at org.testng.TestRunner.init(TestRunner.java:230) [arquillian-service:]
at org.testng.TestRunner.init(TestRunner.java:205) [arquillian-service:]
at org.testng.TestRunner.<init>(TestRunner.java:153) [arquillian-service:]
at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:522) [arquillian-service:]
at org.testng.SuiteRunner.init(SuiteRunner.java:157) [arquillian-service:]
at org.testng.SuiteRunner.<init>(SuiteRunner.java:111) [arquillian-service:]
at org.testng.TestNG.createSuiteRunner(TestNG.java:1272) [arquillian-service:]
at org.testng.TestNG.createSuiteRunners(TestNG.java:1259) [arquillian-service:]
at org.testng.TestNG.runSuitesLocally(TestNG.java:1113) [arquillian-service:]
at org.testng.TestNG.run(TestNG.java:1030) [arquillian-service:]
at org.jboss.arquillian.testng.container.TestNGTestRunner.execute(TestNGTestRunner.java:53) [arquillian-service:]
at org.jboss.arquillian.protocol.jmx.JMXTestRunner.runTestMethodInternal(JMXTestRunner.java:129) [arquillian-service:]
at org.jboss.arquillian.protocol.jmx.JMXTestRunner.runTestMethod(JMXTestRunner.java:108) [arquillian-service:]
at org.jboss.as.arquillian.service.ArquillianService$ExtendedJMXTestRunner.runTestMethod(ArquillianService.java:226) [arquillian-service:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_06]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_06]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_06]
at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_06]
at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:111) [rt.jar:1.7.0_06]
at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:45) [rt.jar:1.7.0_06]
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:235) [rt.jar:1.7.0_06]
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) [rt.jar:1.7.0_06]
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:250) [rt.jar:1.7.0_06]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) [rt.jar:1.7.0_06]
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791) [rt.jar:1.7.0_06]
at org.jboss.as.jmx.PluggableMBeanServerImpl$TcclMBeanServer.invoke(PluggableMBeanServerImpl.java:498)
at org.jboss.as.jmx.PluggableMBeanServerImpl.invoke(PluggableMBeanServerImpl.java:246)
at org.jboss.remotingjmx.protocol.v1.ServerProxy$InvokeHandler.handle(ServerProxy.java:1034)
at org.jboss.remotingjmx.protocol.v1.ServerProxy$MessageReciever$1.run(ServerProxy.java:215)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_06]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_06]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_06]
Caused by: java.lang.ClassNotFoundException: com.prodyna.demo.calculator.CalculatorBeanTest from [Module "deployment.arquillian-service:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA]
at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_06]
at java.lang.Class.forName(Class.java:186) [rt.jar:1.7.0_06]
at org.testng.internal.XmlMethodSelector.checkMethod(XmlMethodSelector.java:245) [arquillian-service:]
... 34 more
00:20:21,305 INFO [org.jboss.weld.deployer] (MSC service thread 1-2) JBAS016009: Stopping weld service for deployment test.jar
00:20:21,331 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment test.jar in 37ms
00:20:21,360 INFO [org.jboss.as.repository] (management-handler-thread - 4) JBAS014901: Content removed from location /Users/dkrizic/Runtime/jboss/standalone/data/content/80/52405ad4245f9de40b281a5e4d0dffc86b518a/content
00:20:21,361 INFO [org.jboss.as.server] (management-handler-thread - 4) JBAS018558: Undeployed "test.jar"
00:20:21,439 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment arquillian-service in 4ms
00:20:21,453 INFO [org.jboss.as.repository] (management-handler-thread - 1) JBAS014901: Content removed from location /Users/dkrizic/Runtime/jboss/standalone/data/content/85/d5c8a22f34ce48a235a2d61f3714ff7b68553c/content
00:20:21,455 INFO [org.jboss.as.server] (management-handler-thread - 1) JBAS018558: Undeployed "arquillian-service"
I am confused and have no more ideas what might be the reason.
{code}
-
demo-calculator.tar.gz 2.7 KB