Java8 ArchLinux arm 字体 NullPointerException

标签 java swing fonts arm archlinux-arm

嗨,我有一个基于 Swing 的 Java 应用程序,它在我的 Kali 发行版中的计算机上运行良好

我想在基于 ArchLinux 的 raspBerry pi3 b+ 中运行这个应用程序 jar,我成功安装了支持 LXDE 的操作系统,我还使用了完全支持 1 8 171 的 openjdk

使用命令 java -jar dvr.jar 运行时,我面临着字体管理器引发的 NullPointerException

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.font.SunFontManager.getInstance(SunFontManager.java:250)
    at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:264)
    at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1113)
    at javax.swing.JComponent.getFontMetrics(JComponent.java:1626)
    at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(BasicLabelUI.java:245)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
    at javax.swing.tree.DefaultTreeCellRenderer.getPreferredSize(DefaultTreeCellRenderer.java:565)
    at javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(BasicTreeUI.java:2815)
    at javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:492)
    at javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1360)
    at javax.swing.tree.VariableHeightLayoutCache.rebuild(VariableHeightLayoutCache.java:738)
    at javax.swing.tree.VariableHeightLayoutCache.setModel(VariableHeightLayoutCache.java:109)
    at javax.swing.plaf.basic.BasicTreeUI.setModel(BasicTreeUI.java:412)
    at javax.swing.plaf.basic.BasicTreeUI$Handler.propertyChange(BasicTreeUI.java:3414)
    at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
    at java.awt.Component.firePropertyChange(Component.java:8428)
    at javax.swing.JTree.setModel(JTree.java:882)
    at javax.swing.JTree.<init>(JTree.java:670)
    at javax.swing.JTree.<init>(JTree.java:645)
    at javax.swing.JTree.<init>(JTree.java:629)
    at com.wanasis.vlc.view.JCheckBoxDragableTree.<init>(JCheckBoxDragableTree.java:88)
    at com.wanasis.vlc.view.JCheckBoxDragableTree.<init>(JCheckBoxDragableTree.java:72)
    at com.wanasis.vlc.control.MainFrameBuilder.build(MainFrameBuilder.java:27)
    at com.wanasis.vlc.SwingMain$1.run(SwingMain.java:56)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

如何设置 swing LAF 使用系统当前字体?

我尝试过,但没有结果

UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName());
UIManager.getLookAndFeelDefaults()
.put("defaultFont", new Font("Arial", Font.BOLD, 14));

最佳答案

感谢 – @Sergiy Medvynskyy -

我使用了 java 字体部分来了解这个想法

我使用pacman工具搜索了一些字体pacman -Ss font然后我用谷歌搜索并选择了一些我想要的字体包,并将我的应用程序切换为使用 Times字体

注意:不要忘记通过 -Sy pacman -Sy 更新 pacman , -Ss 是包搜索工具,使用存储库后的包名称/例如extra/mypack-alpha v.x.y.z安装mypack-alpha使用pacman -S mypack-alpha

关于Java8 ArchLinux arm 字体 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59286350/

相关文章:

java - 在 Jersey 客户端 API 中使用 BeanParam

java - 是否有识别模式本身的 Java 智能日期 API?

java - 借助log4j输出hadoop程序的变量

jquery - 动态加载字体 html jquery

html - 更改 CSS 中的表格字体

java - 将 JSON 从 Elasticsearch 转换为 Java 对象

Java程序错误: cannot find symbol

java - 慢速 Swing GUI 启动时间

java - GUI线程更新问题

css - 如何在 ffonts.net 上使用@font-face 更改字体