• Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 5.0.4
    • None
    • Demonstrator
    • None

      [INFO] — exec-maven-plugin:1.2:exec (default-cli) @ maven —
      Exception in thread "main" java.lang.RuntimeException: java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager;
      at com.arjuna.common.internal.util.propertyservice.BeanPopulator.getNamedInstance(BeanPopulator.java:81)
      at com.arjuna.common.internal.util.propertyservice.BeanPopulator.getDefaultInstance(BeanPopulator.java:49)
      at com.arjuna.ats.jta.common.jtaPropertyManager.getJTAEnvironmentBean(jtaPropertyManager.java:42)
      at com.arjuna.ats.jta.TransactionManager.transactionManager(TransactionManager.java:71)
      at TransactionManagerExample.main(TransactionManagerExample.java:39)
      Caused by: java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager;
      at java.lang.Class.getDeclaredFields0(Native Method)
      at java.lang.Class.privateGetDeclaredFields(Class.java:2570)
      at java.lang.Class.getDeclaredFields(Class.java:1903)
      at com.arjuna.common.internal.util.propertyservice.BeanPopulator.configureFromProperties(BeanPopulator.java:135)
      at com.arjuna.common.internal.util.propertyservice.BeanPopulator.getNamedInstance(BeanPopulator.java:78)
      ... 4 more
      Caused by: java.lang.ClassNotFoundException: javax.transaction.TransactionManager
      at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      ... 9 more

      Probably due to Tx API being in provided scope, not included in exec:exec under src/java/main?

      [INFO] +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:provided

      Also: NCDFE in javax_transaction/TransactionExample:

      Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logging/Logger

      Probably wanna audit the whole module; is this not tested in CI? Would suggest re-implementing perhaps as unit tests instead of Main classes.

      From Mike: It gets run under CI regularly (and the last build was on 22-May-2014 16:13:23). I can't remember the last time it failed. You should be able to just check out the repo and type mvn clean install from the top

      From Tom: I said that we might not run exec:exec in CI as some of the QS are quite intricate and difficult to script.

            [JBTM-2182] [quickstart] NoClassDefFoundError on ArjunaJTA/maven

            Tom Jenkinson added a comment - Resolved in https://github.com/jbosstm/quickstart/commit/daa819a176ade22ae75c1e05e127b4d9257c83ae

            Tom Jenkinson added a comment - One PR: https://github.com/jbosstm/quickstart/pull/125

            I merged this for the reported QS, I will leave it open till we have checked more of them.

            Tom Jenkinson added a comment - I merged this for the reported QS, I will leave it open till we have checked more of them.

            My recommendation is to go through each pom and explicitly add the missing dependencies. This would keep the examples self contained and make it easy for the user to figure out what the dependencies are.

            Michael Musgrove added a comment - My recommendation is to go through each pom and explicitly add the missing dependencies. This would keep the examples self contained and make it easy for the user to figure out what the dependencies are.

            Thanks Andrew, we can take a look then

            Tom Jenkinson added a comment - Thanks Andrew, we can take a look then

            I don't have a great solution with the Mains approach that fixes point 1) above.

            I could fix 2), but the issue there is in scope=provided in dependencyManagement in a parent POM, and I'm not certain what else this would affect by changing the parent. Conversely, overriding on the child level is likely to not cover all the cases in which a NCDFE my occur; I've run into 3 of these already in various test cases.

            Honestly sounds like more a task for those guys familiar w/ the layout. :/ And I'd also recommend putting "exec:exec" into your CI jobs so that if you're not tracking proper unit tests, at least you'd get failure notifications in your builds.

            S,
            ALR

            Andrew Rubinger (Inactive) added a comment - I don't have a great solution with the Mains approach that fixes point 1) above. I could fix 2), but the issue there is in scope=provided in dependencyManagement in a parent POM, and I'm not certain what else this would affect by changing the parent. Conversely, overriding on the child level is likely to not cover all the cases in which a NCDFE my occur; I've run into 3 of these already in various test cases. Honestly sounds like more a task for those guys familiar w/ the layout. :/ And I'd also recommend putting "exec:exec" into your CI jobs so that if you're not tracking proper unit tests, at least you'd get failure notifications in your builds. S, ALR

            If you have a fix locally that is still with the Main approach then please do raise a PR for it - it would be greatly appreciated. I know you work for JBoss but would you mind signing our CLA? (JBoss Transactions - https://cla.jboss.org/index.seam) I will mark you as a Patch contributor and assign the issue to you if would like to go down this route.

            Thanks!
            Tom

            Tom Jenkinson added a comment - If you have a fix locally that is still with the Main approach then please do raise a PR for it - it would be greatly appreciated. I know you work for JBoss but would you mind signing our CLA? (JBoss Transactions - https://cla.jboss.org/index.seam ) I will mark you as a Patch contributor and assign the issue to you if would like to go down this route. Thanks! Tom

            rhn-engineering-mmusgrov You won't be looking for a failure; you should be looking for this test passing. And as I say, it's not implemented as a test, nor is it executed as part of "mvn install" phase. The issue is as I note; the JTA API is in "provided" scope which is not available to the "exec" plugin.

            So, there are a few issues here:

            1) This isn't included in the testsuite
            2) The JTA API isn't on the --classpath when running

            From what I've seen, this isn't isolated to the Arjuna/maven quickstart. :/

            I'd have issued a PR for fixing, but unsure of how you guys would like to proceed.

            Andrew Rubinger (Inactive) added a comment - rhn-engineering-mmusgrov You won't be looking for a failure; you should be looking for this test passing . And as I say, it's not implemented as a test, nor is it executed as part of "mvn install" phase. The issue is as I note; the JTA API is in "provided" scope which is not available to the "exec" plugin. So, there are a few issues here: 1) This isn't included in the testsuite 2) The JTA API isn't on the --classpath when running From what I've seen, this isn't isolated to the Arjuna/maven quickstart. :/ I'd have issued a PR for fixing, but unsure of how you guys would like to proceed.

              thjenkin@redhat.com Tom Jenkinson
              arubinge@redhat.com Andrew Rubinger (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: