Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java模块时绕过旧的java meta-inf/services_Java_Maven_Batik_Java Platform Module System_Module Info - Fatal编程技术网

使用java模块时绕过旧的java meta-inf/services

使用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 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.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系统做到这一点。据我所知,它确实试图通过构造自动模块来支持旧罐子。我想会有办法处理这一问题。这是一项可怕的工作但是谢谢你的密码。