【问题标题】:NoClassDefFoundError when running awt codes with openjdk on windows platform在 Windows 平台上使用 openjdk 运行 awt 代码时出现 NoClassDefFoundError
【发布时间】:2016-09-20 02:21:02
【问题描述】:

我按照http://openjdk.java.net/groups/build/ 的说明为windows 构建了一个32 位openjdk(jdk8u92),构建过程成功,没有任何问题,但是当我使用swing 和新构建的openjdk 运行程序时,这是一个简单的gui 程序,出现如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: sun.font.SunFontManager
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.getFamily(Font.java:1220)
at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
at java.awt.Font.getFamily(Font.java:1186)
at sun.swing.SwingUtilities2.displayPropertiesToCSS(SwingUtilities2.java:1478)
at javax.swing.plaf.basic.BasicHTML$BasicDocument.setFontAndColor(BasicHTML.java:366)
at javax.swing.plaf.basic.BasicHTML$BasicDocument.<init>(BasicHTML.java:355)
at javax.swing.plaf.basic.BasicHTML$BasicEditorKit.createDefaultDocument(BasicHTML.java:311)
at javax.swing.plaf.basic.BasicHTML.createHTMLView(BasicHTML.java:54) 
at javax.swing.plaf.basic.BasicHTML.updateRenderer(BasicHTML.java:207)
at javax.swing.plaf.basic.BasicLabelUI.propertyChange(BasicLabelUI.java:417)
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.JLabel.setText(JLabel.java:330)
......

我可以在openjdk中找到sun.font.SunFontManager,但是类加载器似乎无法加载类...

有人可以帮忙吗?

【问题讨论】:

    标签: java fonts build awt openjdk


    【解决方案1】:

    最后我自己找到了这个问题的根本原因:

    这个问题是由于我将 openjdk 与由 gnuwin32 编译的 freetype 2.3.5_1 库链接引起的,但我的本地构建环境基于 cygwin。所以, 运行awt java代码时,freetype 2.3.5_1会报错没有找到依赖(应该是zip2.dll,gunwin32在构建freetype 2.3.5_1时添加了它),而openjdk吃了这个错误并抛出sun.font.SunFontManager is not found .

    解决方案是使用visual studio在我自己的环境中构建freetype。

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 2016-01-11
      • 1970-01-01
      • 2020-09-07
      • 2020-02-21
      • 2021-05-06
      • 2020-02-11
      • 1970-01-01
      • 2012-08-03
      相关资源
      最近更新 更多