【问题标题】:Font not found by JasperReports when built with Maven使用 Maven 构建时 JasperReports 找不到字体
【发布时间】:2013-11-04 19:34:25
【问题描述】:

我不得不将非标准字体(称为“Ovo”)添加到我正在处理的 JasperReports 项目中,并按照所有指示(例如 here)将字体导出到 .jar从 iReport 并将其添加到我在 Eclipse 中的构建路径中。当我用 eclipse 编译项目时,这工作正常。

现在我正在转向生产,并且一直在使用 mvn clean install 命令在命令行上使用 Maven (v3.0.4) 编译项目,因此 eclipse 完全超出了构建周期.我已将字体 jar 安装到我的本地 maven 存储库中,并将其作为依赖项添加到我的 pom 中(类似于here 所述),但随后我运行程序,当生成使用该字体的文档的代码执行时,我获取JRFontNotFoundException

我检查了我的本地 repo 和我的 pom 并确保 jar 在那里并且 pom 正确识别它。我还使用 mvn dependency:build-classpath 检查了我的 maven 构建路径,还查看了我的 mvn install 输出。字体 jar 的路径出现在两者中,并且没有抛出任何错误。

我没有想法。为什么在 CLI 上使用 maven 编译项目时这个字体 jar 不起作用,但在 eclipse 中编译它时没有问题? (它也是 Eclipse 中的一个 maven 项目,所以 .classpath 几乎只是说“使用 maven”)

这是我用来在本地仓库中安装 jar 的命令:

    mvn install:install-file -Dfile=jFreeChartFonts.jar -DgroupId=com.example -DartifactId=jFreeChartFont -Dversion=0.0.1 -Dpackaging=jar

这是 pom.xml 中的依赖声明:

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>jFreeChartFonts</artifactId>
        <version>0.0.1</version>
    </dependency>

我也尝试将范围设置为运行时而不是编译,但这没有区别。

【问题讨论】:

  • 你检查了 maven repo 中的 font's jar 吗?也许它坏了。您是否尝试在您的第一个应用程序(您在帖子的第一部分中描述)中使用这个 jar(来自 maven repo)?
  • 我只是对照原件核对过,但据我所知它们是相同的;它们包含相同的文件,并且文件的大小都相同。我能看到的唯一区别是,在 repo 中,版本已附加到文件名中。当我添加 maven 依赖项(我已经清理并更新了 maven 项目)时,我从 eclipse 中的构建路径路径中删除了原始的外部 jar 依赖项,因此当我从 eclipse 构建时,它使用的是 maven repo afaik 中的那个。当我以这种方式从 Eclipse 构建时,它工作正常。但是有了 mvn,就不行了。
  • 我想这个问题可以概括为:A)用mvn构建maven项目和在eclipse中构建它有什么区别?和/或 B) 我怎样才能找到每个的更多构建细节,以便我可以更仔细地检查差异并找出问题的根源?

标签: java eclipse maven fonts jasper-reports


【解决方案1】:

在 lib jasperreport 中:打开 .jar
打开:net/sf/jasperreports/fonts
你看:只有文件夹字体名称'pictonic'存在
和文件配置:'jasperreports-fonts.xml'

<fontFamily name="Pictonic" visible="false">
        <normal>
            <ttf>net/sf/jasperreports/fonts/pictonic/pictonic.ttf</ttf>
            <svg>net/sf/jasperreports/fonts/pictonic/pictonic.svg</svg>
            <eot>net/sf/jasperreports/fonts/pictonic/pictonic.eot</eot>
            <woff>net/sf/jasperreports/fonts/pictonic/pictonic.woff</woff>
        </normal>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
    </fontFamily>

复制文件夹dejavu有:DejaVuSans.ttf,DejaVuSans-Bold.ttf,...
到 'net/sf/jasperreports/fonts'
并添加到配置文件:'jasperreports-fonts.xml'

<fontFamily name="DejaVu Sans">
...
</fontFamily>

END 重建 MAVEN -> 成功了!

【讨论】:

  • jasperreports JAR 中没有 /fonts 文件夹。它有一个单独的 JAR,jasperreports-fonts。
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
相关资源
最近更新 更多