使用Maven构建时,JasperReports找不到字体

时间:2013-10-25 15:32:34

标签: java eclipse maven fonts jasper-reports

我必须在我正在处理的JasperReports项目中添加一个非标准字体(称为“Ovo”)并遵循所有指示(例如here)将字体导出到来自iReport的.jar并将其添加到Eclipse中的构建路径中。当我用eclipse编译项目时,这很好用。

现在我正在转向生产并使用 mvn clean install 命令在Maven(v3.0.4)的命令行上编译项目,因此eclipse完全脱离了构建周期。我已经将字体jar安装到我的本地maven repo并将其作为依赖项添加到我的pom中(类似于描述here)但是然后我运行程序并且生成使用该字体的文档的代码执行我得到JRFontNotFoundException

我已经检查了我当地的仓库和我的pom,并确保罐子在那里并且pom正确识别它。我还使用 mvn依赖: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>

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

1 个答案:

答案 0 :(得分:0)

lib中的

jasperreport:open .jar
open:net / sf / jasperreports / fonts
你看:只是文件夹字体名称&#39; pictonic&#39;存在
和文件配置:&#39; jasperreports-fonts.xml&#39;

<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,...
to&#39; net / sf / jasperreports / fonts&#39;
并添加到配置文件:&#39; jasperreports-fonts.xml&#39;

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

END重建MAVEN - &gt;是成功的!