2017-03-31 2297 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应用程序使用。 –