前言
集成UEditor实现后台自定义上传时,无法正常读取配置文件。
问题
java.nio.file.NoSuchFileException: file:/newkdd.jar!/BOOT-INF/classes!/config.json
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.Files.readAllBytes(Files.java:3152)
分析
本地环境(Windows)可以正常访问,代码如下:
ConfigManager.class.getClassLoader().getResource("config.json").getPath();
测试环境(Linux)路径可以正常得到,但无法正常访问。开始以为不同操作系统导致,但经多次日志输出,证明和此无关。后来考虑和ClassPath有关,经查询java -jar 运行的环境变量有所差异。
解决方法
拷贝文件到新路径,修改如下:
ConfigManager.class.getClassLoader().getResource("config.json").getPath();
InputStream inputStream = ConfigManager.class.getClassLoader().getResourceAsStream("config.json");
File targetFile = new File("config.json");
FileUtils.copyInputStreamToFile(inputStream, targetFile);
网友评论