java.nio.file.InvalidPathException异常解决
一.问题概述
本人在ubuntu22.04的操作系统上,运行java程序时创建一个文件时,由于文件名称中包含了中文,所以导致了程序抛出了java.nio.file.InvalidPathException的异常。
java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: 样例-1.txt at java.base/sun.nio.fs.UnixPath.encode(UnixPath.java:121) at java.base/sun.nio.fs.UnixPath.<init>(UnixPath.java:68) at java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279) at java.base/java.nio.file.Path.resolve(Path.java:515)
二.问题分析
在本地的windows环境中调试程序来跟踪错误时,却发现本地的程序创建含有中文名称的文件是可以成功的。所以初步判断应该是ubuntu22.04的操作系统字符编码的问题。而且ubuntu22.04的操作系统会有bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)的提示信息。
三.解决方案
1.替换镜像源
sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/g' /etc/apt/sources.list
可以将ubuntu22.04操作系统的镜像源更换为阿里云ECS镜像源,这样方便下载和安装软件。
2.清理软件包缓存
apt-get clean
3.更新软件包索引
apt-get update
4.安装locales
apt-get install -y locales
5.指定语言环境
locale-gen en_US.UTF-8
6.指定文件编码启动JVM
java -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -jar xxx.jar
通过以上6个步骤的处理,然后重启ubuntu22.04操作系统,最后程序在创建中文名称的文件成功,InvalidPathException异常的问题得以解决。
到此这篇关于java.nio.file.InvalidPathException异常解决的文章就介绍到这了,更多相关java.nio.file.InvalidPathException异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- java.lang.ExceptionInInitializerError异常的解决方法
- 文件路径正确,报java.io.FileNotFoundException异常的原因及解决办法
- Java中java.lang.ClassCastException异常原因及解决方法
- java.lang.NullPointerException异常问题解决方案
- 解决java.util.NoSuchElementException异常的问题
- Java 异常java.lang.NoSuchFieldException解决方案
- Java类加载异常:java.lang.ClassNotFoundException解决方法
- 详解Java中NullPointerException异常的原因详解以及解决方法
相关文章
Reactor中的onErrorContinue 和 onErrorResume
这篇文章主要介绍了Reactor中的onErrorContinue 和 onErrorResume,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下2022-09-09
idea中git如何修改commit(ChangeList的使用)
这篇文章主要介绍了idea中git如何修改commit(ChangeList的使用),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-04-04
线程池之jdk1.8 Executors创建线程池的几种方式
这篇文章主要介绍了线程池之jdk1.8 Executors创建线程池的几种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08


最新评论