我有一个非常简单的代码:
public static void main(String[] arg){
FileSystems.getDefault();
}它在Java7中运行良好
但是将UnsupportedCharsetException: GBK抛到java8中,完整堆栈如下所示:
Exception in thread "main" java.lang.ExceptionInInitializerError
at sun.nio.fs.WindowsFileSystem.<init>(WindowsFileSystem.java:67)
at sun.nio.fs.WindowsFileSystemProvider.<init>(WindowsFileSystemProvider.java:53)
at sun.nio.fs.DefaultFileSystemProvider.create(DefaultFileSystemProvider.java:36)
at java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:108)
at java.nio.file.FileSystems$DefaultFileSystemHolder.access$000(FileSystems.java:89)
at java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:98)
at java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:96)
at java.security.AccessController.doPrivileged(Native Method)
at java.nio.file.FileSystems$DefaultFileSystemHolder.defaultFileSystem(FileSystems.java:96)
at java.nio.file.FileSystems$DefaultFileSystemHolder.<clinit>(FileSystems.java:90)
at java.nio.file.FileSystems.getDefault(FileSystems.java:176)
at com.yy.ent.test.Test1.main(Test1.java:26)
Caused by: java.nio.charset.UnsupportedCharsetException: GBK
at java.nio.charset.Charset.forName(Charset.java:531)
at sun.nio.fs.Util.<clinit>(Util.java:41)
... 12 more我正在使用中文windows7,我的java8是:
我该如何解决这个问题?
发布于 2016-04-01 09:01:30
JRE安装程序似乎只在地区需要时才安装“扩展”字符集:https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html。
Oracle的Java开发工具包7 (Java 7)适用于所有平台(Solaris、Linux和Microsoft Windows),以及用于Solaris和Linux的Java SE运行时环境7 (JRE 7)支持本页显示的所有编码。Oracle的用于Microsoft的JRE 7可以作为完整的国际版本或欧洲语言版本安装。默认情况下,如果确认主机操作系统只支持欧洲语言,则JRE 7安装程序将安装欧洲语言版本。如果安装程序确认需要任何其他语言,或者如果用户要求在自定义安装中支持非欧洲语言,则会安装完整的国际版本。欧洲语言版本只支持以下基本编码集表中显示的编码。国际版本(包括lib/charsets.jar文件)支持该页面上显示的所有编码。
这也适用于Java 8,我认为这意味着JDK支持所有字符集(包括lib/charsets.jar)。如果安装程序是由具有欧洲地区的用户运行的,JRE尝试安装一个最小的环境,并且不会安装扩展字符集(如GBK )。
解决方案:尝试安装JDK或将用户的区域和语言设置为中文(简体),然后重新安装JRE。
发布于 2016-03-31 12:56:48
或者尝试将"sun.jnu.encoding“属性更改为其他属性,例如:
-Dsun.jnu.encoding=UTF-8或者检查JVM是否包含GBK支持所需的"lib/charsets.jar“(http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html)
https://stackoverflow.com/questions/36331128
复制相似问题