You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Maven Java项目中直接使用Jaspersoft Studio生成的font.jar

无需解压直接使用Jaspersoft Studio生成的字体JAR包

我之前也碰到过一模一样的问题,JasperReports对字体资源的加载确实有特定要求,不过只要配置到位,完全不用解压就能直接用这个JAR包。下面是具体的解决步骤:

1. 先把字体JAR安装到本地Maven仓库

这个JAR是你自己生成的,不在公共Maven仓库里,所以第一步得把它安装到本地仓库,这样项目才能通过Maven依赖正常引用。打开终端,运行下面的命令(记得替换成你自己的JAR路径和自定义的坐标信息):

mvn install:install-file -Dfile=./your-custom-fonts.jar -DgroupId=com.your-team -DartifactId=jasper-custom-fonts -Dversion=1.0.0 -Dpackaging=jar

2. 在项目pom.xml中添加依赖

安装完成后,在你的Maven项目的pom.xml里加上这个JAR的依赖:

<dependency>
    <groupId>com.your-team</groupId>
    <artifactId>jasper-custom-fonts</artifactId>
    <version>1.0.0</version>
</dependency>

3. 配置JasperReports的字体扩展

这是最关键的一步——JasperReports需要明确知道去哪里找JAR里的字体定义XML,分两种情况处理:

  • 如果你的字体JAR里已经自带了jasperreports_extension.properties文件(Jaspersoft Studio生成的JAR通常会默认包含这个),那你可以跳过这一步,直接测试;
  • 如果没有这个文件,或者需要自定义路径,就在你的项目src/main/resources目录下创建这个文件,添加以下内容:
# 指定字体扩展的注册表工厂
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
# 指向JAR内部的字体定义XML路径(替换成你实际的路径)
net.sf.jasperreports.extension.simple.font.families.customfonts=fonts/your-font-definitions.xml

这里的路径是相对于字体JAR内部的结构,比如你的字体XML在JAR的fonts文件夹下,就写fonts/your-font-definitions.xml。

4. 验证配置

做完上面的步骤后,启动你的项目,JasperReports应该就能从JAR包中加载字体了。如果还是不行,可以排查这几点:

  • 确认Maven依赖已经正确引入(可以看IDE的依赖库,或者打包后的lib目录里有没有这个字体JAR);
  • 核对字体XML在JAR里的路径,和jasperreports_extension.properties里配置的完全一致;
  • 检查有没有和其他JasperReports扩展依赖冲突,比如不同版本的jasperreports-core可能会干扰资源加载。

至于为什么解压后能正常工作?其实是因为解压后字体XML直接暴露在类路径根目录(或者Jasper默认扫描的路径),JasperReports能自动识别;而放在JAR里时,需要通过扩展属性文件明确引导它去JAR内部找资源。

内容的提问来源于stack exchange,提问作者Andres Sandoval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:18:32