Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7168427

FileInputStream cannot open file where the file path contains asian characters [macosx]

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • 8
    • 7
    • core-libs
    • x86
    • os_x

      FULL PRODUCT VERSION :
      1.7_04-b21

      ADDITIONAL OS VERSION INFORMATION :
      OSX 10.6.8

      A DESCRIPTION OF THE PROBLEM :
      I am unsing a PDF viewer (JPdal - swing component) which is loading all the OTF fonts under /Library/fonts. With JDK 1.7 there are many expection for asian fonts
      "java.io.FileNotFoundException: /Library/Fonts/???????????????????????? Pro W3.otf (No such file or directory)
      at java.io.FileInputStream.open(Native Method)
      at java.io.FileInputStream.<init>(FileInputStream.java:138)
      at java.io.FileInputStream.<init>(FileInputStream.java:97)
      at org.jpedal.fonts.FontMappings.addFontFile(Unknown Source)

      The filename of the font has asian characters in it's filename.
      It seems that fonts with a filename using characters other than ASCII are not loadable in JDK 7 on OSX.

      REGRESSION. Last worked in version 7

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. Download LGPL version of jpedal (www.jpedal.org)
      2. Create a simpel swing application (JFrame)
      3. Add a JPanel to the frame
      4. Add pdf viewer with "add(new org.jpedal.examples.simpleviewer.javabean.SimpleViewerBean());" to the JPanel
      5. Start the application
      6. Exeption is shown

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      No Exception should be shown for reading fonts
      ACTUAL -
      java.io.FileNotFoundException: /Library/Fonts/???????????????????????? Pro W3.otf (No such file or directory)
      at java.io.FileInputStream.open(Native Method)
      at java.io.FileInputStream.<init>(FileInputStream.java:138)
      at java.io.FileInputStream.<init>(FileInputStream.java:97)
      at org.jpedal.fonts.FontMappings.addFontFile(Unknown Source)

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      java.io.FileNotFoundException

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      /*
       * To change this template, choose Tools | Templates
       * and open the template in the editor.
       */
      package swingtest;

      /**
       *
       * @author Clemens Lanthaler ###@###.###
       */
      public class NewJFrame extends javax.swing.JFrame {

          /**
           * Creates new form NewJFrame
           */
          public NewJFrame() {
              initComponents();
              add(new org.jpedal.examples.simpleviewer.javabean.SimpleViewerBean());
          }

          /**
           * This method is called from within the constructor to initialize the form.
           * WARNING: Do NOT modify this code. The content of this method is always
           * regenerated by the Form Editor.
           */
          @SuppressWarnings("unchecked")
          // <editor-fold defaultstate="collapsed" desc="Generated Code">
          private void initComponents() {

              jComboBox1 = new javax.swing.JComboBox();
              jButton1 = new javax.swing.JButton();
              panel = new javax.swing.JPanel();

              setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

              jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Hallllllllllllllllllloo1", "HHHHHHHHaaaaaaaaaaaaaalllllllllllllllllllllll2222222222", "HHHHHHHHaaaaaaaaaaaaaalllllllllllllllllllllll333333333333333" }));

              jButton1.setText("jButton1");

              org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel);
              panel.setLayout(panelLayout);
              panelLayout.setHorizontalGroup(
                  panelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                  .add(0, 0, Short.MAX_VALUE)
              );
              panelLayout.setVerticalGroup(
                  panelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                  .add(0, 163, Short.MAX_VALUE)
              );

              org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
              getContentPane().setLayout(layout);
              layout.setHorizontalGroup(
                  layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                  .add(layout.createSequentialGroup()
                      .add(48, 48, 48)
                      .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                          .add(layout.createSequentialGroup()
                              .add(jComboBox1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 153, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                              .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 63, Short.MAX_VALUE)
                              .add(jButton1))
                          .add(panel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                      .add(39, 39, 39))
              );
              layout.setVerticalGroup(
                  layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                  .add(layout.createSequentialGroup()
                      .add(22, 22, 22)
                      .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                          .add(jButton1)
                          .add(jComboBox1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                      .add(35, 35, 35)
                      .add(panel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                      .addContainerGap(51, Short.MAX_VALUE))
              );

              pack();
          }// </editor-fold>

          /**
           * @param args the command line arguments
           */
          public static void main(String args[]) {
              /*
               * Set the Nimbus look and feel
               */
              //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
              /*
               * If Nimbus (introduced in Java SE 6) is not available, stay with the
               * default look and feel. For details see
               * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
               */
              try {
                  for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                      if ("Nimbus".equals(info.getName())) {
                          javax.swing.UIManager.setLookAndFeel(info.getClassName());
                          break;
                      }
                  }
              } catch (ClassNotFoundException ex) {
                  java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              } catch (InstantiationException ex) {
                  java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              } catch (IllegalAccessException ex) {
                  java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                  java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              }
              //</editor-fold>

              /*
               * Create and display the form
               */
              java.awt.EventQueue.invokeLater(new Runnable() {

                  public void run() {
                      new NewJFrame().setVisible(true);
                  }
              });
          }
          // Variables declaration - do not modify
          private javax.swing.JButton jButton1;
          private javax.swing.JComboBox jComboBox1;
          private javax.swing.JPanel panel;
          // End of variables declaration
      }

      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Switch back to JDK 1.6_u31 on all platforms. Abort porting to JDK 1.7

            sherman Xueming Shen
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: