2015-12-06 1 views
1

J'utilise Apache POI pour écrire une feuille de calcul. La ligne problématique est où j'appelle Sheet#autoSizeColumn(int column). Si je l'exécute sur un shell unix sans environnement graphique, l'exception suivante apparaît:Apache POI bibliothèque dynamique manquante libfreetype.so

Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /usr/pkg/java/openjdk7/jre/lib/amd64/xawt/libmawt.so: Shared object "libXext.so.7" not found 

Selon apache's quick guide il y a une propriété qui devrait être mis à signaliser environnement sans tête, donc j'essayer l'appel suivant:

java -jar -Xmx200m -Djava.awt.headless=true myJar.jar 

Mais je reçois alors une autre exception pour la même ligne:

Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /usr/pkg/java/openjdk7/jre/lib/amd64/libfontmanager.so: Shared object "libfreetype.so.7" not found 

le guide apache ci-dessus dit aussi «J'assurer que les polices I utilisation dans votre classeur sont disponibles pour Java ". Je ne l'utilise pas vraiment des polices spécifiques, la seule et unique chose que je fais avec les polices est

XSSFFont boldFont = (XSSFFont) wb.createFont(); 
boldFont.setBold(true); 
titleRowStyle.setFont(boldFont); 

Le shell unix court

openjdk version "1.7.0-internal" 
OpenJDK Runtime Environment (build 1.7.0-internal-pkgsrc_2015_01_06_05_56-b00) 
OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode) 

et

NetBSD *** 6.1.5 NetBSD 6.1.5 (jajo) #1: Sun Jun 21 09:13:03 UTC 2015 [email protected]***:/usr/src/sys/arch/amd64/compile/jajo amd64 

Est-il possible de résoudre ce problème?

+0

Comment avez-vous installé la JVM? Était-ce d'un paquet? Avez-vous ignoré les dépendances? Avez-vous freetype installé? – Gagravarr

+0

Je ne suis pas l'administrateur de la machine cible donc malheureusement je ne peux pas vous donner de tels détails sur l'installation de la JVM. Freetype semble être installé car 'freetype-config' est disponible. –

+0

Vous devez probablement installer les bibliothèques manquantes sur cette machine pour le faire fonctionner. – centic

Répondre

0

Je trouve une version ancienne bibliothèque dans le système:

bash-4.3$ find /usr -name "libfreetype.*" 
find: /usr/games/hide: Permission denied 
/usr/pkg/lib/libfreetype.la 
/usr/pkg/lib/libfreetype.a 
/usr/pkg/lib/libfreetype.so 
/usr/pkg/lib/libfreetype.so.6 
/usr/pkg/lib/libfreetype.so.6.11.3 

Ensuite, je crée un lien symbolique pour la lastest version disponible comme si ce serait la version 7:

ln -s /usr/pkg/lib/libfreetype.so.6.11.3 ~/tmp/lib/libfreetype.so.7 

Et maintenant démarrer mon fichier jar avec une variable d'environnement:

LD_LIBRARY_PATH=~/tmp/lib java -jar -Xmx200m -Djava.awt.headless=true myJar.jar