RFR: 8275007: Java fails to start with null charset if LC_ALL is set to certain locales [v3]

Ichiroh Takiguchi itakiguchi at openjdk.java.net
Mon Nov 15 02:43:48 UTC 2021


On Fri, 12 Nov 2021 19:11:16 GMT, Naoto Sato <naoto at openjdk.org> wrote:

>> Naoto Sato has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Force the jnu encoding to UTF-8 if the original one is not supported
>
> I reproduced those failures on Debian Linux. Corrected the issue by replacing unsupported jnu encoding with `UTF-8` in `System::initPhase1`.

@naotoj , sorry for bothering you again.
Still I got exception. It seems value "jnuEncoding" should be overwritten or set "fastEncoding" to "FAST_UTF_8" on jnu_util.c.
Could you check this part again ?

$ 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: 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: Provider sun.nio.cs.ext.ExtendedCharsets not found
	at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
	at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:875)
	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/jdk.internal.loader.NativeLibraries.findBuiltinLib(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:157)
	at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:322)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:289)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:274)
	at java.base/jdk.internal.loader.BootLoader.loadLibrary(BootLoader.java:149)
	at java.base/sun.nio.fs.UnixNativeDispatcher.<clinit>(UnixNativeDispatcher.java:667)
	at java.base/sun.nio.fs.UnixFileSystem.<init>(UnixFileSystem.java:65)
	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/sun.launcher.LauncherHelper.loadModuleMainClass(LauncherHelper.java:748)
	at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:683)

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

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


More information about the core-libs-dev mailing list