2010-04-06 4 views
3

J'essaie de déboguer un problème de police dans une application Java tierce. Plus précisément, ChemAxon JChem. J'ai consulté ce guide: http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.htmlJava: Comment savoir quel fichier fontconfig est actuellement utilisé par mon système?

Une partie du problème, c'est que je ne suis pas sûr du fichier fontconfig.properties.src que ma configuration Java est actuellement en train de référencer.

Voici mes fichiers fontconfig:

$ ls fontconfig*src 
fontconfig.Fedora.properties.src fontconfig.properties.src 
fontconfig.SuSE.properties.src fontconfig.Ubuntu.properties.src 

Mon système est un système CentOS, donc j'imagine qu'il est probablement soit ferencing le fichier par défaut fontconfig.properties.src ou le fichier fontconfig.Fedora.properties.src, depuis CentOS et Fedora sont tous deux dérivés de Red Chapeau. Donc, puis-je savoir définitivement quel est le fichier fontconfig utilisé par mon système?

Merci,

-John David

Répondre

0

Essayez le suivi des fichiers qui sont ouverts, en utilisant l'outil de ligne de commande lsof, par exemple

lsof -r | grep fontconfig 
+0

Hey, merci pour la suggestion. Malheureusement, cela ne fait apparaître que des fichiers binaires dans mon répertoire ~/.fontconfig. L'ouverture de ces fichiers * ne m'indique pas certains chemins vers les répertoires de polices dans mon répertoire/usr/share/fonts /, mais pas les fichiers fontconfig.properties actuellement référencés. – jkndrkn

+0

Peut-être qu'il ne lit aucun d'entre eux! Vous pourriez essayer d'entrer dans le code dans un débogueur. – vickirk

+0

Je suppose qu'il lit le fichier et le ferme immédiatement ... – Adam

0

Il suffit d'utiliser strace pour vérifier que ces fichiers est ouvert avec succès:

$ strace -f -e open java ... 2>&1 | grep fontconfig 
[pid 3321] open("/usr/java/jdk1.7.0_55/jre/lib/fontconfig.RedHat.6.bfc", O_RDONLY|O_LARGEFILE) = 115 

Si cela ne vous dit pas quel fichier il utilise, il est probable qu'il utilise à la place fonctconfig. Vous obtiendrez une sortie de départ comme celui-ci alors:

[pid 3259] open("/usr/java/jdk1.7.0_55/jre/lib/i386/xawt/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 
[pid 3259] open("/usr/java/jdk1.7.0_55/jre/lib/i386/xawt/../libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 
[pid 3259] open("/usr/java/jdk1.7.0_55/bin/../lib/i386/jli/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 
[pid 3259] open("/usr/lib/libfontconfig.so.1", O_RDONLY) = 116 
0

La classe sun.awt.FontConfiguration déjà JRE a vous connecter pour cela, il vous suffit de l'activer.

  • Ajouter cette option pour Java -Dsun.java2d.debugfonts=true
  • Modifier jre/lib/logging.properties

Modifier cette ligne

java.util.logging.ConsoleHandler.level = ALL 

Ajouter cette ligne

sun.awt.FontConfiguration.level = ALL 

Et tu l alors une ligne comme celui-ci dans votre stderr (enregistreur utilise stderr pour une raison quelconque)

CONFIG: Read logical font configuration from /your/path/jre/lib/fontconfig.RedHat.6.bfc 
0

Vous pouvez utiliser les options ci-dessus mais de JDK 7 et 8 il y a un problème avec le JDK, fichier fontconfig ne sont pas ramassé pour tout système d'exploitation Linux. Son par défaut à libfontconfig qui est présent dans le système d'exploitation.

Voici l'URL de défaut http://bugs.java.com/view_bug.do?bug_id=7175487

Questions connexes