问题
I am getting this error message when I try to compile my new modularized Java 11 application:
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for C:\Users\inter\.m2\repository\xalan\xalan\2.7.2\xalan-2.7.2.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class org.apache.bsf.BSFManager not in module
This appears to be an issue from a dependency of a dependency. I can't even find which module is pulling it in so I can update it.
I am using openjdk 11.0.2, IntelliJ 2018.3.4, Maven
Any advice how I can troubleshoot or fix this? I have found very little documentation on this issue.
回答1:
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.
Just to explain what has caused the issue in your code, I would share a screenshot and then try to add details around it.
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(modulepath or unnamed module) 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.
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.
An ideal way would be reporting this to the maintainers and getting it resolved if they are actively maintaining it (the last release was almost 5 years back, might just want to look for a better alternative IMHO).
来源:https://stackoverflow.com/questions/54682417/java-11-unable-to-derive-module-descriptor