如何在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
相关产品推荐
相关产品推荐

