2017-09-29 1 views
1

notre application. est développé avec Spring boot, le type d'emballage est la guerre. Nous l'exécutons à la fois depuis la ligne de commande "java -jar b2b.war" et sur Tomcat dédié. Avec les rapports Jasper, nous avons eu une erreur "La police Arial n'est pas disponible pour la JVM". Eh bien, un problème connu, nous avons créé jar extension de police par Jasper Repost Studio et l'a emballé dans la guerre. Tout fonctionne ensuite sur Windows, avec Tomcat embarqué et dédié. Sous Linux et Tomcat dédié, l'erreur "Police Arial n'est pas disponible" s'affiche. Après l'installation du paquetage msttcorefonts, l'erreur a disparu, mais le fichier PDF est généré sans caractères cyrilliques, uniquement en anglais. Cela m'a fait penser que JVM ignore l'extension de police et prend les polices du système. Mais ensuite j'ai essayé d'exécuter la même application sur Linux avec Tomcat embarqué (java -jar b2b.war) - ça a bien marché! Si, cependant, je supprime manuellement l'extension de police jar de war/WEB-INF/lib, les caractères cyrilliques disparaissent du rapport. Donc l'extension est importante, au moins avec le mode "java -jar".Jasper rapports l'extension de police ne fonctionne pas sur démarrage de printemps avec dédié Tomcat

Enfin: sous Linux, notre extension de police fonctionne en « java jar » lancement (intégré Tomcat), et ne fonctionne pas sur Tomcat dédié, avec la même guerre et même machine virtuelle Java. Des idées?

Répondre

0

La solution était dans les autorisations Unix, comme cela arrive souvent. Bien que les journaux Tomcat contient des exceptions totalement trompeuses:

net.sf.jasperreports.engine.fonts.InvalidFontException: Error loading font "fonts/arial.ttf". 
    at net.sf.jasperreports.engine.fonts.SimpleFontFace.loadFont(SimpleFontFace.java:206) ~[jasperreports-6.4.0.jar:6.4.0] 
    at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:167) ~[jasperreports-6.4.0.jar:6.4.0] 
    at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFace(SimpleFontExtensionHelper.java:376) [jasperreports-6.4.0.jar:6.4.0]... 

, la raison réelle est que Java ne peut pas écrire dans le répertoire tomcat/temp. Lorsque j'ai redéfini la température avec des autorisations d'accès total pour tout le monde, le rapport a commencé à fonctionner correctement.