You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重建项目时theme.res文件损坏求助(原JDK8可正常运行)

问题:theme.res文件持续损坏导致字体加载失败(JDK8升级后出现)

项目中的theme.res文件持续损坏并被损坏版本替换,切换到非JDK8环境后出现以下字体加载异常,此前使用JDK8时可正常运行:

Exception while reading font from resource path /com/codename1/impl/javase/Roboto-Thin.ttf
java.io.IOException: Problem reading font data.
    at java.desktop/java.awt.Font.createFont0(Font.java:1183)
    at java.desktop/java.awt.Font.createFont(Font.java:1052)
    at com.codename1.impl.javase.JavaSEPort.loadTrueTypeFont(JavaSEPort.java:7010)
    at com.codename1.ui.Font.createTrueTypeFont(Font.java:212)
    at com.codename1.ui.plaf.UIManager.resetThemeProps(UIManager.java:412)
    at com.codename1.ui.plaf.UIManager.<init>(UIManager.java:108)
    at com.codename1.ui.plaf.UIManager.getInstance(UIManager.java:126)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:1098)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.lang.RuntimeException: java.io.IOException: Problem reading font data.
    at com.codename1.impl.javase.JavaSEPort.loadTrueTypeFont(JavaSEPort.java:7059)
    at com.codename1.ui.Font.createTrueTypeFont(Font.java:212)
    at com.codename1.ui.plaf.UIManager.resetThemeProps(UIManager.java:412)
    at com.codename1.ui.plaf.UIManager.<init>(UIManager.java:108)
    at com.codename1.ui.plaf.UIManager.getInstance(UIManager.java:126)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:1098)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Caused by: java.io.IOException: Problem reading font data.
    at java.desktop/java.awt.Font.createFont0(Font.java:1183)
    at java.desktop/java.awt.Font.createFont(Font.java:1052)
    at com.codename1.impl.javase.JavaSEPort.loadTrueTypeFont(JavaSEPort.java:7010)
    ... 7 more
Compile is forcing compliance to the supported API's/features for maximum device compatibility. This allows smaller
        code size and wider device support

解决办法

  • 恢复原始theme.res文件:从版本控制系统拉取未损坏的备份替换当前文件;无版本控制的话,从Codename One默认模板提取干净的theme.res覆盖。
  • 锁定JDK版本:在项目构建配置中强制使用JDK8编译运行,高版本JDK的字体校验逻辑更严格,易和旧版Codename One产生兼容冲突。
  • 修复字体资源:重新下载官方正版Roboto-Thin.ttf替换项目中损坏的字体文件;或在theme.res中更换为其他兼容字体。
  • 关闭自动主题生成:如果有自动生成theme.res的工具/脚本,暂时禁用,避免损坏文件被自动替换。
  • 升级Codename One:更新到最新版本,新版本修复了高版本JDK的兼容性问题,优化了字体加载逻辑。

内容的提问来源于stack exchange,提问作者user1678742

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:27:30