ClassLoader.getResource(filename) 的注意事项

解决URL中空格导致的文件读取问题
本文介绍了如何处理因URL中空格转换为%20而导致的文件路径问题,提供了一种方法来确保正确读取含有空格的文件路径。

今天因为这个问题耽误了很久,记录下来留念一下

URL licenseURL =this.getClass().getClassLoader().getResource("license.dat");

 通过类似代码来取得某个文件的路径,文件建所在路径不能有空格。如果里面有空格会转换成%20, 就是unicode码了,在读文件的时候,得把%20重新换成空格,这样才能读取到文件。

java.nio.file.FileSystemNotFoundException at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171) at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157) at java.nio.file.Paths.get(Paths.java:143) at com.ruoyi.kettle.tools.KettleUtil$KettleEnv.init(KettleUtil.java:448) at com.ruoyi.kettle.tools.KettleUtil.runKettleJob(KettleUtil.java:238) at com.ruoyi.kettle.service.impl.KettleJobServiceImpl.runJobRightNow(KettleJobServiceImpl.java:259) at com.ruoyi.kettle.tools.RedisStreamUtil.readGroup(RedisStreamUtil.java:251) at com.ruoyi.kettle.tools.CommandLineRunnerImpl$1.run(CommandLineRunnerImpl.java:26) 16:51:35.413 [Thread-3] ERROR c.r.k.t.KettleUtil - [init,461] - Kettle环境初始化失败 java.nio.file.FileSystemNotFoundException public static class KettleEnv { public static void init() { try { //增加自定义的插件库 int lengths = StepPluginType.getInstance().getPluginFolders().size(); URL resourceUrl = KettleUtil.class.getClassLoader().getResource(""); if (resourceUrl == null) { throw new FileNotFoundException("无法定位资源目录"); } Path homePath = Paths.get(resourceUrl.toURI()); Path kettleRoot = homePath.resolve("kettlePlugins").normalize(); String pluginPath = String.valueOf(kettleRoot); log.info("kettle插件路径,{}",pluginPath); if (!StepPluginType.getInstance().getPluginFolders().stream().anyMatch(a -> a.getFolder().equals(pluginPath))) { StepPluginType.getInstance().getPluginFolders().add(new PluginFolder(pluginPath, false, true)); } KettleEnvironment.init(); EnvUtil.environmentInit(); log.info("Kettle环境初始化成功"); } catch (Exception e) { e.printStackTrace(); log.error("Kettle环境初始化失败"); } } } kettle插件在D:\IDEA\java_kettle\smart-kettle\RuoYi-master\ruoyi-admin\src\main\resources\kettlePlugins,我希望执行kettle作业时候直接用本地程序的插件,ruoyi框架打jar包部署,提示上面的情况,怎么调整。
06-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值