Daffodil 2.2.0 uses ICU4J 62.1

IBM DFDL uses ICU4J 51.1


These are not compatible. Hence, annotating some of the tests in Daffodil, so 
that they will try to also run the test under IBM DFDL if it is found on the 
classpath.... doesn't work.


I tried backing out daffodil's dependency to 51.1, but I get test failures.


When I try to run tests within Daffodil that dynamically load the IBM DFDL 
runner, it fails because the IBM DFDL runner calls methods in the ICU library 
that don't exist in version 62.1 of ICU.


Specifically the com.ibm.icu.impl.ICUBinary.readHeader(...) method. Fails with 
NoSuchMethodError


I'm not finding a clear, simple solution to this by web searching.


Isolating the IBM_DFDL class so that it can have it's own separate incompatible 
ICU library version requires use of a second java classLoader to load the 
dynamically-loaded module.


Good examples of how to do this on the web seem to be lacking however. I know 
OGSI modules are supposedly the solution to such problems, but those seem to 
require buying into an extensive framework.


It sure seems to me I should be able to add one line to the ibmTDMLCrossTester 
module's build.sbt indicating that it is to use an isolated classpath loader 
for its dependencies. That should be all that is needed information-wise to 
solve this.


Any suggestions?






Reply via email to