A bug in filesystem bootstrap (unix/ linux) prevents

Dawid Weiss dawid.weiss at gmail.com
Wed Jul 4 12:43:52 UTC 2012


Hi folks.

Run the following with -Dfile.encoding=UTF-16:

public class TestBlah {
  public static void main(String []) throws Exception {
    TimeZone.getDefault();
  }
}

This on linux (and any unixish system I think) will result in:

java.lang.ExceptionInInitializerError
	at java.nio.file.FileSystems.getDefault(FileSystems.java:176)
	at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:482)
	at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:477)
...

There is an encoding-sensitive part calling getBytes on the initial
path (and this screws it up):

    // package-private
    UnixFileSystem(UnixFileSystemProvider provider, String dir) {
        this.provider = provider;
        this.defaultDirectory = UnixPath.normalizeAndCheck(dir).getBytes();
        if (this.defaultDirectory[0] != '/') {
            throw new RuntimeException("default directory must be absolute");
        }

Filed a bug for this but don't have the ID yet.

Dawid



More information about the core-libs-dev mailing list