On Tue, 9 Nov 2021 19:38:46 GMT, Naoto Sato <na...@openjdk.org> wrote:

>>> If this issue is not a part of JEP-400, I think UTF_8 may not be only 
>>> solution for sun/nio/fs/Util.java.
>>> Please explain why UTF_8 is better than ISO_8859_1.
>> 
>> Just to add to Naoto's comment. When the JDK starts in unusual/unsupported 
>> configurations then it needs a default for the stdout/stderr print streams, 
>> for encoding/decoding files paths in java.io, and for encoding/decoding 
>> files paths in the java.nio.file implementation. It's important that the 
>> latter two are the same, having one be UTF-8 and the other be 8859-1 won't 
>> work.
>> 
>> There may be an argument that the JDK should emit a warning at startup.
>
>> There may be an argument that the JDK should emit a warning at startup.
> 
> Updated to emit a warning, if `sun.jnu.encoding` is not supported.

Hello @naotoj .
I appreciate your code update.
I'd like to confirm one thing.
If you could not recreate this issue on your test machine, please ignore this 
message.

I tested your code on my CentOS7 x86_64.
I saw following exception.

$ git log --oneline | head
e91e9d85327 8276721: G1: Refine G1EvacFailureObjectsSet::iterate
8822d41fdcc 8274736: Concurrent read/close of SSLSockets causes SSLSessions to 
be invalidated unnecessarily
c1e41fe38bb 8276842: G1: Only calculate size in bytes from words when needed
c8b0ee6b8a0 8276833: G1: Make G1EvacFailureRegions::par_iterate const
0699220830a 8268882: C2: assert(n->outcnt() != 0 || C->top() == n || 
n->is_Proj()) failed: No dead instructions after post-alloc
d7012fbd604 8276880: Remove java/lang/RuntimeTests/exec/ExecWithDir as 
unnecessary
f9024d0606e 8230130: javadoc search result dialog shows cut off headers for 
long results
055de6f5662 8223358: Incorrect HTML structure in annotation pages
a60e91259ba 8198626: 
java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html fails on mac
dde959dfcef 8276808: java/nio/channels/Channels/TransferTo.java timed out
$ cat Hello.java
public class Hello {
  public static void main(String[] args) throws Exception {
    System.out.println("Hello");
  }
}
$ env LC_ALL=kk_KZ.pt154 locale
LANG=ja_JP.UTF-8
LC_CTYPE="kk_KZ.pt154"
LC_NUMERIC="kk_KZ.pt154"
LC_TIME="kk_KZ.pt154"
LC_COLLATE="kk_KZ.pt154"
LC_MONETARY="kk_KZ.pt154"
LC_MESSAGES="kk_KZ.pt154"
LC_PAPER="kk_KZ.pt154"
LC_NAME="kk_KZ.pt154"
LC_ADDRESS="kk_KZ.pt154"
LC_TELEPHONE="kk_KZ.pt154"
LC_MEASUREMENT="kk_KZ.pt154"
LC_IDENTIFICATION="kk_KZ.pt154"
LC_ALL=kk_KZ.pt154
$ env LC_ALL=kk_KZ.pt154 
./build/linux-x86_64-server-release/images/jdk/bin/java Hello.java
WARNING: The encoding of the underlying platform's file system is not supported 
by the JVM: PT154
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.util.ServiceConfigurationError: 
java.nio.charset.spi.CharsetProvider: Unable to load 
sun.nio.cs.ext.ExtendedCharsets
        at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:586)
        at 
java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:861)
        at 
java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1084)
        at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
        at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
        at 
java.base/java.nio.charset.Charset$ExtendedProviderHolder$1.run(Charset.java:428)
        at 
java.base/java.nio.charset.Charset$ExtendedProviderHolder$1.run(Charset.java:422)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at 
java.base/java.nio.charset.Charset$ExtendedProviderHolder.extendedProviders(Charset.java:422)
        at 
java.base/java.nio.charset.Charset$ExtendedProviderHolder.<clinit>(Charset.java:418)
        at 
java.base/java.nio.charset.Charset.lookupExtendedCharset(Charset.java:442)
        at java.base/java.nio.charset.Charset.lookup2(Charset.java:472)
        at java.base/java.nio.charset.Charset.lookup(Charset.java:460)
        at java.base/java.nio.charset.Charset.isSupported(Charset.java:501)
        at 
java.base/sun.launcher.LauncherHelper.makePlatformString(LauncherHelper.java:891)
Caused by: java.lang.ExceptionInInitializerError
        at java.base/sun.nio.fs.UnixFileSystem.<init>(UnixFileSystem.java:51)
        at java.base/sun.nio.fs.LinuxFileSystem.<init>(LinuxFileSystem.java:39)
        at 
java.base/sun.nio.fs.LinuxFileSystemProvider.newFileSystem(LinuxFileSystemProvider.java:46)
        at 
java.base/sun.nio.fs.LinuxFileSystemProvider.newFileSystem(LinuxFileSystemProvider.java:39)
        at 
java.base/sun.nio.fs.UnixFileSystemProvider.<init>(UnixFileSystemProvider.java:55)
        at 
java.base/sun.nio.fs.LinuxFileSystemProvider.<init>(LinuxFileSystemProvider.java:41)
        at 
java.base/sun.nio.fs.DefaultFileSystemProvider.<clinit>(DefaultFileSystemProvider.java:35)
        at 
java.base/java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:114)
        at 
java.base/java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:103)
        at 
java.base/java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:101)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at 
java.base/java.nio.file.FileSystems$DefaultFileSystemHolder.defaultFileSystem(FileSystems.java:101)
        at 
java.base/java.nio.file.FileSystems$DefaultFileSystemHolder.<clinit>(FileSystems.java:94)
        at java.base/java.nio.file.FileSystems.getDefault(FileSystems.java:183)
        at java.base/java.nio.file.Path.of(Path.java:147)
        at java.base/java.nio.file.Paths.get(Paths.java:69)
        at 
java.base/jdk.internal.jimage.ImageReaderFactory.<clinit>(ImageReaderFactory.java:51)
        at 
java.base/jdk.internal.module.SystemModuleFinders$SystemImage.<clinit>(SystemModuleFinders.java:385)
        at 
java.base/jdk.internal.module.SystemModuleFinders$SystemModuleReader.findImageLocation(SystemModuleFinders.java:429)
        at 
java.base/jdk.internal.module.SystemModuleFinders$SystemModuleReader.read(SystemModuleFinders.java:483)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:809)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:741)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:621)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:633)
        at java.base/java.lang.Class.forName(Class.java:577)
        at java.base/java.lang.Class.forName(Class.java:552)
        at 
java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:859)
        ... 13 more
Caused by: java.lang.NullPointerException: Cannot read the array length because 
"<local2>" is null
        at 
java.base/java.nio.charset.Charset.lookupExtendedCharset(Charset.java:443)
        at java.base/java.nio.charset.Charset.lookup2(Charset.java:472)
        at java.base/java.nio.charset.Charset.lookup(Charset.java:460)
        at java.base/java.nio.charset.Charset.forName(Charset.java:556)
        at java.base/sun.nio.fs.Util.<clinit>(Util.java:41)
        ... 40 more

-------------

PR: https://git.openjdk.java.net/jdk/pull/6282

Reply via email to