Unable to derive module descriptor: Provider {class X} not in module

Xalan

I had a look at their bug tracker following their index page and wasn’t able to find this reported and not sure how actively is the library being maintained either.


General Explanation

Just to explain what has caused the issue in your code, I would share a screenshot and then try to add details around it.

Screenshot

So within the JAR that for version 2.7.2, there are service declarations (META-INF/services) which include org.apache.xalan.extensions.bsf.BSFManager as one of them. The service file here has to indicate the Provider thereby for itself and the class is supposed to be present on the modulepath to be resolved for reliable configuration of modules.

In this case for the module xalan(automatic module), the service listed doesn’t have the provider class packaged within the dependency itself. (See the package org.apache, it doesn’t further have package bsf and the class BSFManager thereby. Hence the exception as you get.

Short term hack

One of the tweaks to get that resolved would be to get update the library jar (patch it) and get rid of the service file if you’re not using it. Or to add the provider copied from the corresponding artifact.

If you don’t directly depend on this artifact or its parent dependencies, you can let those remain on the --classpath and get resolved as an unnamed module for your application.

Long term solve

An ideal way would be to report this to the maintainers and getting it resolved. It depends though on how actively are they maintaining it e.g. the last release for xalan was almost 5 years back, might just want to look for an actively participated alternative in my opinion.

Leave a Comment