[ https://issues.apache.org/jira/browse/SUREFIRE-1424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16213778#comment-16213778 ]
Alan Bateman commented on SUREFIRE-1424: ---------------------------------------- Again, at issue here is that you cannot upgrade a module by means of a JAR file on the class path. For class path applications, the JDK does not resolve the java.transaction module so you can put JTA on the class path and it should work like any library on the class path. However if you compile or run with `--add-modules java.transaction` (or "java.se.ee" or "ALL-SYSTEM") then java.transaction will be resolved so the class path will never be search for classes in the javax.transaction package. Constrast that with JDK 8 where the only supported way to upgrade JTA with the version from Java EE was to use the endorsed standards override mechanism. Aside from app servers, few knew about that mechanism and instead deployed the JTA JAR file on the class path. If you probe closely then you'll see that the javax.transaction.xa classes were always loaded from the JDK. In the case of the javax.transaction package (where Java SE only defines a small subset), some of the classes were loaded from the JDK, some from the JAR file. It was only an accident that it ever worked. > 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)