java –cp

Eclipse MAT和Heaphero都是分析大型堆转储的流行Java工具。 最近,当我们尝试在Eclipse MAT中分析堆转储文件时遇到了一个有趣的问题。 工具因缺少字体crash而崩溃。 我们认为我们将与您分享发现的结果。

CompositeStrike.getStrikeForSlot()中的ArrayIndexOutOfBoundsException

这是我们的环境:

  • Eclipse MAT 1.9
  • Java 8
  • Linux 3.10.0-862.34.2.el7.x86_64

当我们将堆转储文件上传到Eclipse MAT时,它失败并出现以下错误:

 java.lang.ArrayIndexOutOfBoundsException: 0 at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:75) at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93 at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:359) at sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:350) at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:302) at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863) at org.eclipse.birt.chart.device.swing.SwingTextMetrics.reuse(SwingTextMetrics.java:123) at org.eclipse.birt.chart.device.TextAdapter.reuse(TextAdapter.java:36) at org.eclipse.birt.chart.device.swing.SwingTextMetrics.<init>(SwingTextMetrics.java:86) at org.eclipse.birt.chart.device.swing.SwingDisplayServer.getTextMetrics(SwingDisplayServer.java:194) at org.eclipse.birt.chart.device.DisplayAdapter.getTextMetrics(DisplayAdapter.java:138) at org.eclipse.birt.chart.computation.BIRTChartComputation.getTextMetrics(BIRTChartComputation.java:36) at org.eclipse.birt.chart.computation.LegendBuilder$LegendData.<init>(LegendBuilder.java:108) at org.eclipse.birt.chart.computation.LegendBuilder.compute(LegendBuilder.java:493) at org.eclipse.birt.chart.model.layout.impl.LegendImpl.getPreferredSize(LegendImpl.java:2059) at org.eclipse.birt.chart.internal.layout.LayoutManager$ChartLayout.<init>(LayoutManager.java:126) at org.eclipse.birt.chart.internal.layout.LayoutManager.doLayout_tmp(LayoutManager.java:1145) : : : 

在Google God中快速搜索发现了这个有趣的StackOverflow线程 。 这是此线程的摘要。 Java使用linux的fontconfig功能搜索等宽,SansSerif和serif字体。 Linux fontconfig旨在在系统中定位字体,并根据应用程序指定的要求选择字体。 如果缺少上述任何一种字体,则将导致上述异常。

如果您还遇到这种类型的问题,则有3种潜在的解决方案可以解决此问题:

1.安装缺少的字体

2.升级JDK

3.编辑OS字体配置

让我们详细讨论解决方案。

1.安装缺少的字体

您可以通过发出以下命令来尝试安装缺少的字体:

 yum install dejavu-serif-fonts 

2.升级JDK

这是一个已知的JDK错误,在OpenJDK,Oracle和IBM JDK错误数据库中进行了跟踪:

  • https://bugs.openjdk.java.net/browse/JDK-8188030
  • https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8188030
  • http://www-01.ibm.com/support/docview.wss?uid=swg1IJ16655

自以下版本以来,此错误已得到修复:

开启JDK 8u192

OracleJDK 8u192

IBM JDK 8 SR5 FP37(8.0.5.37)

您可以升级到最新的JDK版本来解决此问题。

3.编辑OS字体配置

创建一个文件名/etc/fonts/local.conf。 在此文件中,强制将Utopia作为默认字体,由Java使用。

 <?xml version= '1.0' ?>  <!DOCTYPE fontconfig SYSTEM 'fonts.dtd' >  <fontconfig> <alias> <family>serif</family> <prefer><family>Utopia</family></prefer> </alias> <alias> <family>sans-serif</family> <prefer><family>Utopia</family></prefer> </alias> <alias> <family>monospace</family> <prefer><family>Utopia</family></prefer> </alias> <alias> <family>dialog</family> <prefer><family>Utopia</family></prefer> </alias> <alias> <family>dialoginput</family> <prefer><family>Utopia</family></prefer> </alias>  </fontconfig> 

翻译自: https://www.javacodegeeks.com/2020/02/java-missing-font-crashing-app.html

java –cp

java –cp_Java –缺少字体–崩溃的应用程序!相关推荐

  1. Java –缺少字体–崩溃的应用程序!

    Eclipse MAT和Heaphero都是分析大型堆转储的流行Java工具. 最近,当我们尝试在Eclipse MAT中分析堆转储文件时遇到了一个有趣的问题. 工具因缺少字体crash而崩溃. 我们 ...

  2. macOs开发Java GUI程序提示缺少字体问题解决

    the fonts "Times" and "Lucida Bright" are not available 警告详情 出现原因 解决方案 警告详情 Warn ...

  3. 《Java编码指南:编写安全可靠程序的75条建议》—— 指南20:使用安全管理器创建一个安全的沙盒...

    本节书摘来异步社区<Java编码指南:编写安全可靠程序的75条建议>一书中的第1章,第1.20节,作者:[美]Fred Long(弗雷德•朗), Dhruv Mohindra(德鲁•莫欣达 ...

  4. java进度条字体颜色_java – Nimbus LF – 改变进度条的背景颜色

    我正在使用Netbeans Editor使用Java开发一个小的GUI应用程序. 我在JFrame中添加了一个简单的进度条. 我正在用JDK7开发这个项目 我想将背景颜色从默认橙色更改为个人颜色.我已 ...

  5. 《Java编码指南:编写安全可靠程序的75条建议》—— 指南16:避免授予过多特权...

    本节书摘来异步社区<Java编码指南:编写安全可靠程序的75条建议>一书中的第1章,第1.16节,作者:[美]Fred Long(弗雷德•朗), Dhruv Mohindra(德鲁•莫欣达 ...

  6. Java暑期实训任务二——单词检测程序

    实训内容:模仿"百词斩"手机App,设计并用Java语言实现一个"百词斩"图形界面程序(根据自己的能力,可以适当地增加或删除部分功能). 最低要求: (1)事先 ...

  7. java引入外部字体_Java中如何自定义字体文件(引用外部字体)?-字体文件

    图源来自网络 有时候我们在程序中,会使用到Java字体,但不是所有的字体系统中都会有,我们就可能会使用外部自定义字体,这样在程序迁移部署中就会少些工作,最近在一个项目中使用到了自定义字体文件,理顺了, ...

  8. java+SpringBoot+HTML+Mysq基于微信小程序的掌上博物馆游览

    详细功能设计:请点击下面链接查看 java+SpringBoot+HTML+Mysq基于微信小程序的掌上博物馆游览_哔哩哔哩_bilibili 源码+论文获取: 源码+论文获取请私信获取 摘  要 本 ...

  9. java Font 自定义字体

    记录一下项目中的小问题 1.背景 因为需要用java做报表,发现XChart很好用,但项目在容器中部署后发现,XChart生成的图表中文变成一个个方框,查看资料知,这是由于linux系统中缺少字体导致 ...

最新文章

  1. 网络流FF,EK,dinicm, isap算法板子//带注释
  2. 打开金蝶K/3控制台提示“连接中间层加密服务失败,请确认中间层加密服务已启动”...
  3. activity切换效果
  4. tableau实战系列(四十七)-Tableau快速生成可视化视图
  5. hdu-2553 N皇后问题(深搜 + 状态压缩)
  6. 全端开发——html简介与常用标签
  7. [工具]OFFICE插件管理工具-帮助更好地管理及使用电脑安装过的OFFICE插件
  8. ivy maven_将Maven与Ivy集成
  9. 阿里程序员深夜智救31楼跳楼邻居
  10. 获取进程或线程的ID以及句柄信息
  11. 关于RestTemplate的几个问题
  12. vue cli3 一键 build 区分测试环境和正式环境
  13. 基本数据类型与字符串之间的转换
  14. 对研发经理这一岗位的个人理解
  15. 弹簧优化设计MATLAB,基于Matlab的圆柱螺旋弹簧可靠性优化设计
  16. java作品_50幅惊艳的分形艺术作品
  17. 仿小米官网首页 动态交互(HTML+css+jq)1.通栏以及logo部分
  18. 苹果手机sim卡无效怎么办_苹果手机存储空间不足怎么办
  19. 欧22转债,永02转债上市价格预测
  20. Android - 一种相似图片搜索算法的实现

热门文章

  1. 题解: 区间合并(opj 2-4-7620)
  2. AT2305-[AGC010D]Decrementing【博弈论】
  3. Wannafly挑战赛23F-计数【原根,矩阵树定理,拉格朗日插值】
  4. P3292-[SCOI2016]幸运数字【线性基,LCA,倍增】
  5. nssl1458-HR 的疑惑【枚举】
  6. P2513-[HAOI2009]逆序对数列【dp,前缀和】
  7. 「分块」数列分块入门1 – 9
  8. 网络流及建模专题(上)
  9. CERC2017 Gambling Guide,最短路变形,期望dp
  10. jQuery的三种bind/One/Live/On事件绑定使用方法