2017-03-31 165 views
0

在Ubuntu上安裝了Oracle 8 jdk,在jre/lib中它具有各種fontProperties文件和一個包含字體的字體目錄。但是,當安裝OpenJdk 8時,jre/lib中的字體文件上沒有這樣的字體文件夾。在Linux上爲Openjdk Java定義/安裝字體的位置

那麼它從哪裏得到它的字體,它是否與任何字體一起取決於系統在其他地方安裝了一些字體。

更新 根據通知發出gerynix

fc-list

沒有返回字體

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames() 

java.lang.NullPointerException 
     at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) 
     at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) 
     at sun.awt.FontConfiguration.init(FontConfiguration.java:107) 
     at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) 
     at sun.font.SunFontManager$2.run(SunFontManager.java:431) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at sun.font.SunFontManager.<init>(SunFontManager.java:376) 
     at sun.awt.FcFontManager.<init>(FcFontManager.java:35) 
     at sun.awt.X11FontManager.<init>(X11FontManager.java:57) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at java.lang.Class.newInstance(Class.java:442) 
     at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) 
     at sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:190) 
     at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:224) 
     at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:252) 
     at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94) 
     at Fonts.main(Fonts.java:10) 

回答

1

它得到它從環境中在其之上的你運行應用程序。

查找到:

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames() 

https://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsEnvironment.html

+0

所以我認爲,如果你有一個精簡的Linux機器,沒有字體那麼依賴於某些字體安裝會失敗的任何代碼,有沒有linux命令我可以用它來檢查安裝了哪些字體? –

+0

fc-list,第一個谷歌搜索結果爲「linux檢查可用字體」 – gerynix

+0

好吧,我完成了這兩個命令顯然沒有字體。所以machien是一個運行linux的硬件,我不能像通常的機器那樣更新它,有沒有辦法通過複製文件而不影響其他任何東西來安裝字體供我的Java應用程序使用。 –