Uploaded image for project: 'Red Hat Process Automation Manager'
  1. Red Hat Process Automation Manager
  2. RHPAM-3030

Process Instance Migration is missing Java Expression Language dependency

XMLWordPrintable

    • 2020 Week 25-27 (from Jun 15)

      Unit tests for Process Instance Migration service fail to execute because the Expression Language API is missing at runtime in the productized build. However, the same tests pass in community. This is the exception thrown in the tests:

      04:19:20 [INFO] [ERROR] testSubmitFailed(org.kie.processmigration.service.MigrationServiceImplTest)  Time elapsed: 0.003 s  <<< ERROR!
      04:19:20 [INFO] java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
      04:19:20 [INFO] 	at org.jboss.weld.bootstrap.WeldStartup.startContainer(WeldStartup.java:229)
      04:19:20 [INFO] 	at org.jboss.weld.bootstrap.WeldBootstrap.startContainer(WeldBootstrap.java:69)
      04:19:20 [INFO] 	at org.jboss.weld.environment.se.Weld.initialize(Weld.java:760)
      04:19:20 [INFO] 	at org.jboss.weld.junit.AbstractWeldInitiator.initWeldContainer(AbstractWeldInitiator.java:495)
      04:19:20 [INFO] 	at org.jboss.weld.junit4.WeldInitiator.access$300(WeldInitiator.java:90)
      04:19:20 [INFO] 	at org.jboss.weld.junit4.WeldInitiator$1.evaluate(WeldInitiator.java:226)
      04:19:20 [INFO] 	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
      04:19:20 [INFO] 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
      04:19:20 [INFO] 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
      04:19:20 [INFO] 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
      04:19:20 [INFO] 	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
      04:19:20 [INFO] 	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
      04:19:20 [INFO] 	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
      04:19:20 [INFO] 	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
      04:19:20 [INFO] 	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
      04:19:20 [INFO] 	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
      04:19:20 [INFO] 	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
      04:19:20 [INFO] 	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
      04:19:20 [INFO] Caused by: java.lang.ClassNotFoundException: javax.el.ExpressionFactory
      04:19:20 [INFO] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
      04:19:20 [INFO] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
      04:19:20 [INFO] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
      04:19:20 [INFO] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
      04:19:20 [INFO] 	... 24 more
      

      The root cause are different versions of Thorntail dependencies between community and productized artifacts.

      The version of Thorntail we use in productized builds - 2.5.1.Final-redhat-000010 - is still based on EAP 7.2.x

      In community, we already use 2.7.0.Final which is aligned with 7.3.x.
      And in community, the javax.el.ExpressionFactory class is present in org.glassfish:jakarta.el:jar:3.0.2 which comes from io.thorntail:ee:jar:2.7.0.Final which comes from io.thorntail:jpa:jar:2.7.0.Final. This jakarta.el artifact contains both impl and api.

      But for the productized build io.thorntail:jpa:jar:2.5.1.Final-redhat-00010 doesn't bring transitively the el dependency, just its implementation org.glassfish:javax.el-impl:jar:3.0.1.b08-redhat-00003 which doesn't have the API (class javax.el.ExpressionFactory).

      So either we upgrade or we will manually add there a dependency.

              ant@redhat.com Ant Stephenson
              mmacik@redhat.com Marian Macik
              Marian Macik Marian Macik
              Marian Macik Marian Macik
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: