Bio Formats dependency conflicts


As part of the Bio-Formats team we have seen an issue being reported twice within the past few days regarding a conflict in dependencies after updating Fiji. I was hoping we might be able to get some further info as what may have changed with these particular jars to cause the conflicts.

Most setups were unable to reproduce the issues but they appear to occur on Windows 8.1 installations. When the Fiji update is run the default settings has Java-8 selected under Manage update sites. Running the update with this setup we then see a conflict within the dependency jars.

The error message we are seeing with the conflicts is as below:
There was a problem with the class org.apache.xerces.impl.xs.XMLSchemaLoader which can be found here:
WARNING: multiple locations found!

With Thanks,
David Gault

Indeed, the class org.apache.xerces.impl.xs.XMLSchemaLoader is contained in both of those JAR files. This is because the batik library is an unshaded uber-JAR. Actually, AFAIK, it is the only remaining such JAR distributed with Fiji.

We do have an issue (fiji/fiji#83) devoted to fixing it, but I thought it was going to require us to manually split up batik 1.8 and roll our own. However, good news! Actually, batik 1.8 just moved to a new groupId org.apache.xmlgraphics which I did not notice previously. So I’ll take a crack at updating the dependencies for Fiji across the board now. Stay tuned.

1 Like

Thanks for the update Curtis, that certainly does seem like good news.

Last week, I updated the affected Fiji components to depend on individual batik components, rather than the batik uber-JAR. And on Friday, I uploaded everything to the Java-8 update site. Unfortunately, the Updater does not let you mark a file as obsolete on a downstream update site. So I cannot mark the old batik uber-JAR as obsolete at the moment.

This issue will be moot once we transition the Java-8 update site back onto the ImageJ and Fiji core sites, later this spring/summer.

In the meantime, I’d be curious to know if people are still having this problem, and ideally if you find a way to reliably reproduce it.