使用java模块时绕过旧的java meta-inf/services
我正在尝试使用创建一个Java FX应用程序来显示SVG图像,但是在正确导入所有组件时遇到了问题 经过大约5个小时的搜索和测试,我终于修改了一个依赖项的jar,以删除旧的Java服务(或任何你称之为它的东西),它早于当前的模块系统。因此,当前的解决方法是手动删除“”中的“META-INF/services/org.apache.batik.script.解释器工厂”文件 有没有合适的方法来做到这一点?在我的项目模块信息中,还是通过maven?不需要手动更改jar 提前感谢!:) 如果相关: Mac操作系统,Java openjdk-14.0.2,Maven 3.6.3,VSCode 1.49.0;DR-使用JPMS系统无法绕过batik库的使用java模块时绕过旧的java meta-inf/services,java,maven,batik,java-platform-module-system,module-info,Java,Maven,Batik,Java Platform Module System,Module Info,我正在尝试使用创建一个Java FX应用程序来显示SVG图像,但是在正确导入所有组件时遇到了问题 经过大约5个小时的搜索和测试,我终于修改了一个依赖项的jar,以删除旧的Java服务(或任何你称之为它的东西),它早于当前的模块系统。因此,当前的解决方法是手动删除“”中的“META-INF/services/org.apache.batik.script.解释器工厂”文件 有没有合适的方法来做到这一点?在我的项目模块信息中,还是通过maven?不需要手动更改jar 提前感谢!:) 如果相关: Ma
java.lang.module.InvalidModuleDescriptorException
问题
冗长的版本 几个月前我自己也遇到过同样的问题。我发现,像你一样,很可能也发现 >2)启动层初始化时出错 >java.lang.module.FindException:无法为派生模块描述符 >.m2\repository\org\apache\xmlgraphics\batik script\1.8\batik-script-1.8.jar >原因:java.lang.module.InvalidModuleDescriptorException:提供程序 >模块中没有类org.apache.batik.bridge.RhinoExplorFactory 存在META-INF/services/org.apache.batik.script.解释器工厂配置文件,其提供程序类不在此模块中 回复OP的人有一个
我解释了他们的“我建议您联系该库的维护人员,发布一个可以作为模块运行的版本“给邮件列表OP的建议,作为尝试将batik库与JPMS一起使用是没有希望的线索。我为此奋斗了很长一段时间,最后放弃了JPMS,并试图通过自动化我已经完成的JAR修改来绕过系统 通过使用一个名为Truezip的Maven插件,我将Maven设置为自动解压、更改然后重新压缩依赖项。尽管这不是最优雅的解决方案,但它可以工作,我还在另一个具有类似问题的依赖项上使用它
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>truezip-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>fix-batik-script</id>
<goals>
<goal>remove</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<fileset>
<directory>${settings.localRepository}/org/apache/xmlgraphics/batik-script/1.13/batik-script-1.13.jar/META-INF/services</directory>
<includes>
<include>org.apache.batik.script.InterpreterFactory</include>
</includes>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
truezip maven插件
1.2
修复蜡染脚本
去除
过程资源
${settings.localRepository}/org/apache/xmlgraphics/batik script/1.13/batik-script-1.13.jar/META-INF/services
org.apache.batik.script.解释器工厂
这是向图书馆所有者提出的一个更好的问题。没错,我的问题更多的是针对是否有办法通过JPMS系统做到这一点。据我所知,它确实试图通过构造自动模块来支持旧罐子。我想会有办法处理这一问题。这是一项可怕的工作但是谢谢你的密码。