构建GnuCash文档时Make命令失效,出现Java NoSuchMethodError异常
解决GnuCash文档构建时FOP SVG方法不存在的报错
问题原因
你碰到的java.lang.NoSuchMethodError是FOP与Batik版本不兼容导致的:FOP 2.10要求的Batik版本是1.18及以上,而你安装的Batik 1.17里没有setSourceResolution(float)这个方法——它是Batik 1.18才新增的,所以调用时直接报错终止。
修复步骤
- 先卸载当前的Batik包:
sudo pacman -R java-batik - 手动安装适配的Batik 1.18版本:
- 下载Apache Batik 1.18的二进制包(选支持Java 8+的版本)
- 解压后把所有JAR文件放到FOP的类路径目录(一般是
/usr/share/fop/lib/),或者添加到系统CLASSPATH环境变量里
要是构建脚本支持Maven,也可以在项目pom.xml里指定正确的依赖版本:
<dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-all</artifactId> <version>1.18</version> </dependency> - 验证适配情况:
执行fop -version查看FOP的依赖信息,确认Batik版本匹配上了。
顺带解决字体/连字警告
- 安装常用开源字体包:
sudo pacman -S ttf-dejavu noto-fonts - 修改FOP配置文件
fop.xconf,添加字体映射:<fonts> <font kerning="yes" embed-url="/usr/share/fonts/TTF/DejaVuSans.ttf"> <font-triplet name="DejaVu Sans" style="normal" weight="normal"/> </font> </fonts>
内容的提问来源于stack exchange,提问作者henry
相关产品推荐
相关产品推荐

