我必须在我正在处理的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>
我也尝试将范围设置为运行时而不是编译,但这没有区别。
答案 0 :(得分:0)
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;是成功的!