Java 11无法派生模块描述符

问题描述 投票:6回答:2

当我尝试编译新的模块化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

关于如何解决或解决此问题的任何建议?我发现关于此问题的文档很少。

java maven java-11 java-module serviceloader
2个回答
2
投票
我在their index page之后查看了他们的错误跟踪器,但找不到报告的消息,也不确定该库的维护程度如何。

只是为了解释导致代码问题的原因,我将分享一个屏幕截图,然后尝试在其周围添加详细信息。

Screenshot

因此,在JAR中,对于版本2.7.2,存在服务声明(META-INF/services),其中包括org.apache.xalan.extensions.bsf.BSFManager作为其中之一。这里的服务文件必须为此本身指示提供者,并且应该存在要解析的类(模块路径或未命名模块),以便可靠地配置模块。

在这种情况下,对于模块xalan(自动模块),列出的服务在依赖关系自身中未打包提供程序类。 (请参见软件包org.apache,因此它不再具有软件包bsf和类BSFManager。因此,您将获得例外。

解决该问题的一项调整是更新库jar(对其进行修补),如果不使用它,则删除服务文件。

一种理想的方式是将其报告给维护人员,如果他们正在积极地维护它(最新版本是将近5年,可能只想寻找更好的替代恕我直言)。


0
投票
我尝试在Eclipse中安装TestNG的更新:“帮助->检查更新->取消全选,然后选中TestNG复选框。然后安装最新版本我安装了从7.2.0开始的版本。

它为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.