为什么ContextClassLoader返回带有感叹号字符的路径?
我尝试在WEB-INF / lib中用jar打开文件
Thread.currentThread().getContextClassLoader(); URL url=classLoader.getResource(myconfig);
在调试器中,我可以看到:
jar:file:/C:/apache-tomcat/webapps/mywebapp/WEB-INF/lib/myjarresource.jar! /conf/configuration.xml
为什么文件路径是“!” ? 我认为由于这个原因应用程序无法打开此文件。 如何获得正确的路径? 谢谢。
它意味着什么后来!
在 JAR文件中。
对于myjarresource.jar!/conf/configuration.xml
,使用压缩实用程序(如7-zip)打开myjarresource.jar
,您将看到它包含conf/configuration.xml
。
在JarURLConnection javadoc中 ,描述了JAR URL的语法:
JAR URL的语法是:jar:!/ {entry}
所以’!’ 表示您’输入’java存档。
编辑:我认为你不能做File file=new File(url.toURI())
因为“:”在生成的URI中出现两次并且不符合URI规范 (第2.2和3章)因此这是在文件ctor中被拒绝。