如何在Java-11中运行Apache fop?

xytpbqjk  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(107)

使用fop和Java 11以及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

我得到这个错误:
初始化 Boot 层java.lang.module时出错。FindException:无法为target\lib\batik-script-1.14.jar派生模块描述符。
我可以向pom.xml中的fop依赖项添加排除,但只能看到下一个失败消息(两个模块中的同一个包)等等。
我怎样才能像Eclipse那样从命令行启动我的程序?
我的目标是在每夜构建批处理运行中使用fop。
你可能会发现我的程序here的一个绝对最小版本。

qvk1mo1f

qvk1mo1f1#

您可以将所有非模块化的工件放在类路径上,而不支持派生它们的模块信息。这些将主要被视为未命名的模块。

java --module-path target/rutil-0.0.1-SNAPSHOT.jar;target/lib/fop-2.6.jar \
     --class-path target/lib \
     --module eu.ngong.rutil/eu.ngong.rutil.App

我已经在this answer中为您所面临的错误提供了解释。在使用modulepath上的所有其他工件的同时,解决这个问题的直接方法可以是破解jar以从MANIFEST.MF中删除条目。

相关问题