-
Bug
-
Resolution: Won't Fix
-
P4
-
None
-
1.2.2
-
x86
-
windows_nt
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.