[wildfly-dev] common cdi-tck problem on wildfly with java 9

Tomaž Cerar tomaz.cerar at gmail.com
Mon Jul 11 09:44:36 EDT 2016


This is one of known issues, see for details:
http://openjdk.java.net/projects/jigsaw/spec/issues/#module-graphs
http://openjdk.java.net/projects/jigsaw/spec/issues/#ClassFilesAsResources
http://openjdk.java.net/projects/jigsaw/spec/issues/#PlatformClassLoader

Some of this is being addressed as part upcoming jigsaw b126

--
tomaz


On Mon, Jul 11, 2016 at 10:36 AM, Scott Stark <sstark at redhat.com> wrote:

> So the problem is a change in behavior of a URLClassLoader that has a null
> parent class loader. This seems like it is a big compatibility problem as
> classes defined by such a class loader only have visibility into the
> java.base module rather than the entire platform.
>
> The simple fix is to pass in the new ClassLoader.getPlatformClassLoader()
> as the URLClassLoader parent rather than null. However, this seems like
> what the ClassLoader should be doing itself as I would expect a lot of code
> will break. I'll create a bug report for the simple test case I have that
> shows the problem.
>
> ----- Original Message -----
> From: "Scott Stark" <sstark at redhat.com>
> To: wildfly-dev at lists.jboss.org
> Sent: Monday, July 11, 2016 12:15:32 AM
> Subject: [wildfly-dev] common cdi-tck problem on wildfly with java 9
>
> I'm looking into why the cdi-tck is failing to run on
> wildfly-10.1.0.Final-SNAPSHOT using java 9 and a common issue that I don't
> see in the Java 9 Problems & Solutions FAQ is illustrated by the following
> exception trace. It appears that the class loader that
> org.arquillian.container.chameleon.ContainerLoader is using is associated
> with the java.base module, and thus cannot see anything but the java.base
> classes. Once I figure out how the class loader for java.base is being
> obtained I'll raise a general FAQ for the problems/solutions doc, but I
> thought I might be able to work around this by using the
> -XaddReads:java.sql=java.base to allow java.base to see java.sql, but it
> does not work. Similarly, -XaddExports:java.sql/java.sql=java.base does not
> work.
>
> Is there a check to prevent circular references or am I just not
> understanding how these calls change the module graph?
>
> Tests run: 4, Failures: 1, Errors: 0, Skipped: 3, Time elapsed: 1.121 sec
> <<< FAILURE!
> arquillianBeforeSuite(org.jboss.arq_wf_test.CDITest)  Time elapsed: 0.63
> sec  <<< FAILURE!
> java.lang.NoClassDefFoundError: java/sql/Date
>         at org.yaml.snakeyaml.nodes.Tag.<clinit>(Tag.java:64)
>         at
> org.yaml.snakeyaml.constructor.SafeConstructor.<init>(SafeConstructor.java:52)
>         at
> org.yaml.snakeyaml.constructor.Constructor.<init>(Constructor.java:77)
>         at
> org.yaml.snakeyaml.constructor.Constructor.<init>(Constructor.java:64)
>         at
> org.yaml.snakeyaml.constructor.Constructor.<init>(Constructor.java:54)
>         at
> jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(java.base at 9-ea
> /NativeConstructorAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(java.base at 9-ea
> /DelegatingConstructorAccessorImpl.java:45)
>         at java.lang.reflect.Constructor.newInstance(java.base at 9-ea
> /Constructor.java:453)
>         at java.lang.Class.newInstance(java.base at 9-ea/Class.java:569)
>         at
> org.arquillian.container.chameleon.ContainerLoader.loadContainers(ContainerLoader.java:71)
>         at
> org.arquillian.container.chameleon.ContainerLoader.load(ContainerLoader.java:45)
>         at
> org.arquillian.container.chameleon.ChameleonConfiguration.getConfiguredAdapter(ChameleonConfiguration.java:117)
>         at
> org.arquillian.container.chameleon.ChameleonContainer.init(ChameleonContainer.java:81)
>         at
> org.arquillian.container.chameleon.InitiateContainer.initiateChameleon(InitiateContainer.java:70)
>         at
> org.arquillian.container.chameleon.InitiateContainer.setup(InitiateContainer.java:39)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-ea
> /NativeMethodAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-ea
> /DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(java.base at 9-ea/Method.java:533)
>         at
> org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         at
> org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
>         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.EventImpl.fire(EventImpl.java:67)
>         at
> org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$1.perform(ContainerLifecycleController.java:62)
>         at
> org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$1.perform(ContainerLifecycleController.java:55)
>         at
> org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forEachContainer(ContainerLifecycleController.java:209)
>         at
> org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.setupContainers(ContainerLifecycleController.java:54)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-ea
> /NativeMethodAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-ea
> /DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(java.base at 9-ea/Method.java:533)
>         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.EventImpl.fire(EventImpl.java:67)
>         at
> org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:85)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-ea
> /NativeMethodAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-ea
> /DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(java.base at 9-ea/Method.java:533)
>         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.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:73)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-ea
> /NativeMethodAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-ea
> /DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(java.base at 9-ea/Method.java:533)
>         at
> org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         at
> org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
>         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.test.impl.EventTestRunnerAdaptor.beforeSuite(EventTestRunnerAdaptor.java:75)
>         at
> org.jboss.arquillian.testng.Arquillian.arquillianBeforeSuite(Arquillian.java:71)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-ea
> /NativeMethodAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-ea
> /DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(java.base at 9-ea/Method.java:533)
>         at
> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
>         at
> org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:514)
>         at
> org.testng.internal.Invoker.invokeConfigurations(Invoker.java:215)
>         at
> org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
>         at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)
>         at org.testng.SuiteRunner.run(SuiteRunner.java:268)
>         at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>         at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>         at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
>         at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
>         at org.testng.TestNG.run(TestNG.java:1064)
>         at
> org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77)
>         at
> org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:110)
>         at
> org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:106)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-ea/Native
> Method)
>         at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-ea
> /NativeMethodAccessorImpl.java:62)
>         at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-ea
> /DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(java.base at 9-ea/Method.java:533)
>         at
> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
>         at
> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
>         at
> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
>         at
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
>         at
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
> Caused by: java.lang.ClassNotFoundException: java.sql.Date
>         at java.net.URLClassLoader.findClass(java.base at 9-ea
> /URLClassLoader.java:384)
>         at java.lang.ClassLoader.loadClass(java.base at 9-ea
> /ClassLoader.java:486)
>         at java.lang.ClassLoader.loadClass(java.base at 9-ea
> /ClassLoader.java:419)
>         ... 85 more
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20160711/b14328f5/attachment.html 


More information about the wildfly-dev mailing list