【发布时间】:2021-05-28 16:53:57
【问题描述】:
将 fop 和 Java11 与 Maven 和 Eclipse 一起使用,我可以从 xsl-fo 输入创建 PDF 文档。
但前提是我从 Eclipse 中启动程序。
我的 pom.xml 建议 Maven 将所有用于依赖项的 jar 文件复制到 lib 文件夹。准备从命令行运行。
当我尝试从命令行启动程序时,例如
java -p target/rutil-0.0.1-SNAPSHOT.jar;target/lib -m eu.ngong.rutil/eu.ngong.rutil.App
我明白了 启动层初始化时出错 java.lang.module.FindException:无法为 target\lib\batik-script-1.14.jar 派生模块描述符。 我可以在 pom.xml 中的 fop 依赖项中添加排除项,但只能看到下一条失败消息(两个模块中的相同包)等等。
如何像 Eclipse 一样从命令行启动我的程序? 我的目标是在夜间构建批处理运行中使用 fop。
您可能会找到我的程序here 的绝对最小版本。
【问题讨论】:
-
没有解决您的问题,但您不能在模块路径上使用 batik-script,因为 JAR 声明了一个不包含自身的服务,并且模块系统对此表示反对 - 请参阅 this issue .
-
可能最快的解决方法是不为您的应用程序使用模块系统,您应该能够使用
-cp target/rutil-0.0.1-SNAPSHOT.jar;"target/lib/*"而不是-p ...从类路径启动它。 -
@NicolaiParlog 将所有内容移动到类路径将意味着摆脱
module-info(不是模块化一个应用程序),对吗?为了继续前进,我有tried executing问题中的链接项目,模块路径所需的依赖项绝对最小,并且仍然能够与类路径中的其余部分一起执行。我能够看到共享示例的成功执行。您可能会在建议的方法中发现任何警告?
标签: java maven java-11 apache-fop java-module