java - 在使用 Java 模块时规避旧的 java meta-inf/services

标签 java maven batik java-platform-module-system module-info

我正在尝试使用 Batik-library 制作一个显示 SVG 图像的 Java FX 应用程序,但我在正确导入所有组件时遇到问题。

经过大约 5 小时的搜索和测试,我终于更改了其中一个依赖项的 jar 以删除早于当前模块系统的旧 Java 服务(或您称之为的任何内容)。因此,当前的解决方法是手动删除“batik-script-1.13.jar”中的“META-INF/services/org.apache.batik.script.InterpreterFactory”文件。

是否有正确的方法来做到这一点?在我的项目模块信息中,还是通过 Maven?无需手动更改 jar?

提前致谢! :)

如果相关: Mac 操作系统,Java openjdk-14.0.2,Maven 3.6.3,VSCode 1.49.0

最佳答案

TL;DR — 无法绕过 batik 库的 java.lang.module.InvalidModuleDescriptorException 使用 JPMS 系统的问题。


冗长的版本

几个月前,我自己也遇到了同样的问题。我发现,很可能也发现了,this old Jigsaw Dev mailing list post ……

> 2) Error occurred during initialization of boot layer

> java.lang.module.FindException: Unable to derive module descriptor for

> .m2\repository\org\apache\xmlgraphics\batik-script\1.8\batik-script-1.8.jar

> Caused by: java.lang.module.InvalidModuleDescriptorException: Provider

> class org.apache.batik.bridge.RhinoInterpreterFactory not in module

There exists META-INF/services/org.apache.batik.script.InterpreterFactory config file with a provider class that is not in this module.

回复 OP 的人是 a member of the Java Platform Development Teamdecades of experience .

我解释了他们对邮件列表 OP 的“我建议您联系该库的维护者以发布一个可以作为模块运行的版本”的建议,作为尝试使用带有 JPMS 的 batik 库是没有希望的。

关于java - 在使用 Java 模块时规避旧的 java meta-inf/services,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63910813/

相关文章:

java - 使用 Apache Batik 纠正 SVG 文件的缩进( pretty-print )

java - 内存泄漏 - com.mysql.jdbc.ConnectionPropertiesImpl$*ANY*ConnectionProperty

java - itext7中如何更改附件添加时间的显示顺序

java - 从 Fragment 调用方法

performance - 我可以让 maven-assembly-plugin 更快吗?

maven - 如何将 Maven 原型(prototype)添加到 Github?

java - 如果检测到更改,如何使 Maven 自动重新编译?

java - SVG 转 PNG - batik

Java 字体大小与 HTML 字体大小

java - 在 Servlet 中使用 Batik 时出错