Home > Java und JDBC > RHat7 Java und STIX Fonts

RHat7 Java und STIX Fonts

Probleme mit Java und STIX Fonts

RedHat hat in Version 7.3 die STIX Fonts eingeführt mit denen es gerade im openjdk Bereich ja einige Probleme gibt. Davon sind auch die Oracle Java Produkte betroffen. Bei RedHat findet man die Information dazu im Bug Fix Advisory unter RHBA-2018:0872.

OUI - Oracle Universal Installer Beispiel für den Fehler

Dieses Beispiel steht auch stellvertretend für die anderen Java GUI Tools wie DBCA, NETCA, DBUA, etc.

[oracle@myhost database]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 30728 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-05-04_10-00-05AM. Please wait ...[oracle@myhost database]$ Exception in thread "main" java.lang.ExceptionInInitializerError
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
     at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
     at javax.swing.UIDefaults.getUI(UIDefaults.java:769)
     at javax.swing.UIManager.getUI(UIManager.java:1016)
     at javax.swing.JComboBox.updateUI(JComboBox.java:266)
     at javax.swing.JComboBox.init(JComboBox.java:231)
     at javax.swing.JComboBox.(JComboBox.java:183)
     at oracle.help.DefaultNavigatorPanel$MinimumSizedComboBox.(Unknown Source)
     at oracle.help.DefaultNavigatorPanel.(Unknown Source)
     at oracle.help.Help._initHelpSystem(Unknown Source)
     at oracle.help.Help.(Unknown Source)
     at oracle.help.Help.(Unknown Source)
     at oracle.help.Help.(Unknown Source)
     at oracle.install.commons.util.HelpManager.loadHelp(HelpManager.java:230)
     at oracle.install.commons.util.Application.startup(Application.java:943)
     at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181)
     at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:198)
     at oracle.install.commons.base.driver.common.Installer.startup(Installer.java:566)
     at oracle.install.ivw.db.driver.DBInstaller.startup(DBInstaller.java:127)
     at oracle.install.ivw.db.driver.DBInstaller.main(DBInstaller.java:165)
Caused by: 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.(FontDesignMetrics.java:350)
     at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:302)

     at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1113)
     at javax.swing.JComponent.getFontMetrics(JComponent.java:1626)
     at javax.swing.text.PlainView.calculateLongestLine(PlainView.java:639)
     at javax.swing.text.PlainView.updateMetrics(PlainView.java:209)
     at javax.swing.text.PlainView.updateDamage(PlainView.java:527)
     at javax.swing.text.PlainView.insertUpdate(PlainView.java:451)
     at javax.swing.text.FieldView.insertUpdate(FieldView.java:293)
     at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1610)
     at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1869)
     at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:201)
     at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:748)
     at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707)
     at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130)
     at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:669)
     at javax.swing.text.JTextComponent.setText(JTextComponent.java:1669)
     at javax.swing.JTextField.(JTextField.java:243)
     at javax.swing.JTextField.(JTextField.java:183)
     at com.jgoodies.looks.plastic.PlasticComboBoxUI.(PlasticComboBoxUI.java:88)
     ... 27 more

Workaround

Eine Datei /etc/fonts/local.conf anlegen, die folgenden Inhalt hat:

[root@myhost fonts]# cat local.conf
<?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>