当我尝试编译新的模块化Java 11应用程序时,我收到此错误消息:
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
这似乎是由于依赖关系引起的问题。我什至找不到哪个模块将其引入,因此我可以对其进行更新。
我正在使用openjdk 11.0.2,IntelliJ 2018.3.4,Maven
任何建议如何解决或解决此问题?我发现有关此问题的文档很少。
答案 0 :(得分:1)
我在their index page之后查看了他们的错误跟踪器,但找不到报告的报告,也不确定该库的维护程度如何。
只是为了解释导致代码问题的原因,我将分享一个屏幕截图,然后尝试在其周围添加详细信息。
因此,在2.7.2版的JAR中,有服务声明(META-INF/services
),其中包括org.apache.xalan.extensions.bsf.BSFManager
作为其中之一。服务文件必须在此处指示自身的提供者,并且应该解析该类(模块路径或未命名模块)以进行可靠的模块配置。
在这种情况下,对于模块xalan
(自动模块),列出的服务在依赖项本身中未打包提供程序类。 (请参见软件包org.apache
,因此它不再具有软件包bsf
和类BSFManager
。因此,您会遇到异常。
要解决的一项调整措施就是更新库jar(对其进行修补)并在不使用服务文件的情况下摆脱它。
一种理想的方法是将其报告给维护人员,如果他们正在积极维护它(最新版本已经将近5年了,可能只想寻找更好的替代恕我直言)。
答案 1 :(得分:0)
我尝试在Eclipse中安装TestNG的更新:
“帮助->检查更新->取消全选,然后选中TestNG复选框。然后
安装最新版本我安装了从7.2.0开始的版本。
它为我解决了这个问题。