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

Win32: javac fails during 1.2.2 build when not in cp1252 locale

XMLWordPrintable



      Name: vuC71690 Date: 01/24/99

      ###@###.### 1999-01-22

      I'm reporting this against classes_io since the kludge that fixes this
      bug for me affects sun.io.

      I was building 1.2.2 (Cricket) workspace on NT4.0 Server after a
      bringover. Build was going smoothly, but when compiling demos at some
      point I had got an exception from javac, and any further attempts to
      run javac from the ws failed with identical exception.

      A tail of a build log looks like this:

      ---Finished Recursively making all WireFrame.
              cd ..
              cd jfc
              NMAKE -nologo all RELEASE=internal_build
              cd FileChooserDemo
              nmake -nologo all RELEASE=internal_build
              cp ..\..\..\..\..\src\share\demo\jfc\FileChooserDemo\FileChooserDemo.java ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src
              cp ..\..\..\..\..\src\share\demo\jfc\FileChooserDemo\ExampleFileFilter.java ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src
              cp ..\..\..\..\..\src\share\demo\jfc\FileChooserDemo\ExampleFileView.java ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src
              ..\..\..\bin\javac.exe -J-ms16m -J-mx64m -classpath ..\..\..\classes;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src -d ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src\FileChooserDemo.java
              ..\..\..\bin\javac.exe -J-ms16m -J-mx64m -classpath ..\..\..\classes;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src -d ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src\ExampleFileFilter.java
              ..\..\..\bin\javac.exe -J-ms16m -J-mx64m -classpath ..\..\..\classes;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo;..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src -d ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo ..\..\..\..\..\build\win32\demo\jfc\FileChooserDemo\src\ExampleFileView.java
              copy ..\..\..\..\..\src\share\demo\jfc\FileChooserDemo\images
      ..\..\..\..\..\src\share\demo\jfc\FileChooserDemo\images\gifIcon.gif
      ..\..\..\..\..\src\share\demo\jfc\FileChooserDemo\images\jpgIcon.jpg
              2 file(s) copied.
              cd ..
              cd Notepad
              nmake -nologo all RELEASE=internal_build
              cp ..\..\..\..\..\src\share\demo\jfc\Notepad\ElementTreePanel.java ..\..\..\demo\jfc\Notepad\src
              cp ..\..\..\..\..\src\share\demo\jfc\Notepad\Notepad.java ..\..\..\demo\jfc\Notepad\src
              ..\..\..\bin\javac.exe -J-ms16m -J-mx64m -classpath ..\..\..\classes;..\..\..\demo\jfc\Notepad;..\..\..\demo\jfc\Notepad\src -d ..\..\..\demo\jfc\Notepad ..\..\..\demo\jfc\Notepad\src\ElementTreePanel.javaException in thread "main" java.lang.InternalError: Cannot instantiate default converter class sun.io.CharToByteDefault
              at sun.io.Converters.newDefaultConverter(Converters.java:207)
              at sun.io.CharToByteConverter.getDefault(CharToByteConverter.java:59)
              at java.lang.String.getBytes(String.java:670)
              at java.io.Win32FileSystem.getBooleanAttributes(Native Method)
              at java.io.File.exists(File.java:547)
              at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:547)
              at sun.misc.URLClassPath.getResource(Compiled Code)
              at sun.misc.URLClassPath.getResource(URLClassPath.java:141)
              at java.lang.ClassLoader.getBootstrapResource(ClassLoader.java:655)
              at java.lang.ClassLoader.getResource(ClassLoader.java:561)
              at java.lang.ClassLoader.getResource(ClassLoader.java:559)
              at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:722)
              at java.util.ResourceBundle$1.run(ResourceBundle.java:519)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.util.ResourceBundle.findBundle(Compiled Code)
              at java.util.ResourceBundle.getBundle(Compiled Code)
              at java.util.ResourceBundle.getBundle(ResourceBundle.java:334)
              at sun.tools.javac.Main.initResource(Main.java:124)
              at sun.tools.javac.Main.getText(Main.java:152)
              at sun.tools.javac.Main.compile(Compiled Code)
              at sun.tools.javac.Main.main(Main.java:733)
      NMAKE : fatal error U1077: '..\..\..\bin\javac.exe' : return code '0x1'
      Stop.

      And I got the same exception if I try to compile anything with the
      javac from the workspace. If I switch to English (US) locale, javac
      works ok.


      I have done make clean and restarted the build. This time it failed in
      +++Recursively making all rmi ...

              ..\..\..\bin\rmic.exe -v1.1 -classpath ..\..\..\classes -d ..\..\..\classes sun.rmi.registry.RegistryImpl sun.rmi.transport.DGCImpl
      Exception in thread "main" java.lang.InternalError: Cannot instantiate default converter class sun.io.CharToByteDefault
              at sun.io.Converters.newDefaultConverter(Converters.java:207)
              at sun.io.CharToByteConverter.getDefault(CharToByteConverter.java:59)
              at java.lang.String.getBytes(String.java:670)
              at java.io.Win32FileSystem.getBooleanAttributes(Native Method)
              at java.io.File.exists(File.java:547)
              at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:547)
              at sun.misc.URLClassPath.getResource(Compiled Code)
              at java.net.URLClassLoader.findResource(URLClassLoader.java:342)
              at java.lang.ClassLoader.getResource(ClassLoader.java:564)
              at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:722)
              at java.util.ResourceBundle$1.run(ResourceBundle.java:519)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.util.ResourceBundle.findBundle(Compiled Code)
              at java.util.ResourceBundle.getBundle(Compiled Code)
              at java.util.ResourceBundle.getBundle(ResourceBundle.java:334)
              at sun.rmi.rmic.Main.initResources(Main.java:457)
              at sun.rmi.rmic.Main.getString(Main.java:441)
              at sun.rmi.rmic.Main.getText(Main.java:466)
              at sun.rmi.rmic.Main.doCompile(Compiled Code)
              at sun.rmi.rmic.Main.compile(Main.java:103)
              at sun.rmi.rmic.Main.main(Main.java:432)
      NMAKE : fatal error U1077: '..\..\..\bin\rmic.exe' : return code '0x1'
      Stop


      As far as I understand, the problem is that the class
      sun.io.CharToByteDefault is not public, unlike other CharToByte*
      converters. Russian locale uses cp1251. Since CharToByteCp1251 is no
      longer in base sun.io tree and i18n extensions (where this converter
      now resides) are not built yet, java is trying to use Default
      converter as a fallback, but fails to instantiate it.

      If I change CharToByteDefault to be public, recompile it and put it
      into the build's classes tree, javac works in Russian locale again.

      Exception happens when Win32FileSystem.getBooleanAttributes native
      method converts the file name to platform encoding.

      A simple test to get the default converter or to test File.exists
      works ok, though.

      I did a bringover before the build and there were some changes to the
      javavm hierarchy.

      Is there any special reason that CharToByteDefault is not public -
      making it public would fix this problem? sun.io is not encumbered
      with compatibility and spec constraints.



      Workaround: ###@###.### 1999-01-22

      Set regional settings to English (US) or, perhaps, any other cp1252
      locale.

      ======================================================================

      Date: Wed, 17 Feb 1999 23:35:20 +0300
      From: "Valeriy E. Ushakov" <uwe>

      Running javac without JIT cures the problem. If I put a symcjit.dll
      from 1.2beta4 (it don't have a version number in it) it cures the
      problem as well.

      1.2.2 uses the same version of symcjit.dll that ships with 1.2fcs
      (3.00.078).

      So I'm recategorizing this bug against jit_symantec.

            dviswanasunw Deepa Viswanathan (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: