[ https://issues.apache.org/jira/browse/SUREFIRE-1424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16223940#comment-16223940 ]
Tibor Digana commented on SUREFIRE-1424: ---------------------------------------- [~eolivelli] >From what I have understood [~AlanBateman] in Oracle is that we do not have >one problem with Java 9 (removed modules) but actually three ("removed >modules/classes", "core" modules, and "non-core" modules) and all are loaded >in another manner. The "removed" modules are loaded via current solution which is also deprecated {{--add-modules java.se.ee}}. The "core" modules appear in System CL. The "non-core" modules appear in Platform CL which means we have to not to put user's libraries in typical Class-Path in Manifest and programmatically extent Platform CL, load user's libraries in Platform CL and use reflection on entire Surefire Provider to load user's libs. Hoping that resources would be loaded properly and another unexpected problems would not appear. In my understanding we should decide about one of these two options in case of Java 9 non-modular app: + Use Platform CL and not Class-Path in META-INF/MANIFEST.MF in surefirebooter*.jar + or Use --module-path instead. In this case I doubt that Arquillian, Mockito, and proxy frameworks would be able to work with it. I think they rely on system property "java.class.path" and this might be empty then. So it's quite bad situation for us, I have no clear how to decide, and I guess we need to make some tests to understand it better and/or more collaborate with Oracle. > javax.transaction.TransactionManager not visible with Java9 > ----------------------------------------------------------- > > Key: SUREFIRE-1424 > URL: https://issues.apache.org/jira/browse/SUREFIRE-1424 > Project: Maven Surefire > Issue Type: Bug > Components: Maven Surefire Plugin > Affects Versions: 2.20.1 > Environment: Apache Maven 3.5.0 > (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T21:39:06+02:00) > Maven home: /Users/snicoll/tools/maven > Java version: 9, vendor: Oracle Corporation > Java home: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home > Default locale: en_BE, platform encoding: UTF-8 > OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac" > Reporter: Stephane Nicoll > Assignee: Tibor Digana > > I am trying to port Spring Boot to Java9 and I am hitting an issue that looks > like Maven specific. I've managed to trim down the problem to [a simple class > that doesn't involve Spring > Boot|https://github.com/snicoll-scratches/test-jta-java9] > If I run this project on the command line, I get the following: > {noformat} > Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.043 s <<< > FAILURE! - in com.example.testjtajava9.TestJtaJava9ApplicationTests > contextLoads(com.example.testjtajava9.TestJtaJava9ApplicationTests) Time > elapsed: 0.006 s <<< ERROR! > java.lang.NoClassDefFoundError: javax/transaction/TransactionManager > at > com.example.testjtajava9.TestJtaJava9ApplicationTests.contextLoads(TestJtaJava9ApplicationTests.java:9) > Caused by: java.lang.ClassNotFoundException: > javax.transaction.TransactionManager > at > com.example.testjtajava9.TestJtaJava9ApplicationTests.contextLoads(TestJtaJava9ApplicationTests.java:9) > {noformat} > If I run that test with IntelliJ IDEA, it passes. This sample project has > also a simple Gradle build that shows it works with Gradle as well. -- This message was sent by Atlassian JIRA (v6.4.14#64029)