Apache Commons Text

Dear All,

Recently I’ve updated master pom of my plugin to pom-scijava-19.0.0, which includes Apache Commons Text. I use some methods from it in place of deprecated org.apache.commons.lang3.text.WordUtils but it seems that this jar has not been included yet in Fiji installation and my plugin fails with java.lang.NoClassDefFoundError: org/apache/commons/text/WordUtils
I am just wondering if I missed something here?

Cheers
Piotr

Hi Piotr,

Did you also add the

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-text</artifactId>
</dependency>

dependency declaration to your POM file? POM-SCIFIO only declares the bill-of-materials (BOM) that states which versions of different modules its child projects should use. It doesn’t add dependencies to modules. Because of BOM you can omit the <version> tag from your declaration, and don’t have to worry about upgrading it in the future.

Best regards,
Richard

2 Likes

In addition to what @rimadoma said, you will have to upload commons-text to your update site as long as it is not included in Fiji (which it is not at the moment). It is best to use the imagej-maven-plugin for copying your artifacts and its dependencies into an existing ImageJ/Fiji installation that you use for uploading to your update site:

If you POM is configured properly, the following should do the trick:

$ mvn -Dimagej.app.directory=/path/to/Fiji.app install

This will use imagej-maven-plugin to not override existing JARs in the Fiji instance. Hence, I would advise you to start with a fresh Fiji (with Fiji and Java-8 update sites activated) and install your artifact into it with the aforementioned command. Uploading the local-only files to an update site should be good enough then.

Best,
Stefan

3 Likes