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