我有Java webapp,我正在尝试从classpth读取文件。
if (fileName == null){
fileName = Thread.currentThread().getContextClassLoader().getResource("config.properties");
}
objFile = new File(fileName.toURI());
我的classpath中有config.properties。 WEB-INF / classes中。当我在本地检查时,它会给出:fileName.toURI()
,它会给我file:/D:/dev/Tomcat_6_0/webapps/testApp/WEB-INF/classes/config.properties
。工作正常。
问题出在生产Linux服务器上我正在那里找到vfsfile:/export/home/u/bin/jboss-5.1.0.BE/server/default/deploy/testApp.war/WEB-INF/classes/config.properties
。
我正在追踪异常。
Caused by: java.lang.IllegalArgumentException: URI scheme is not "file"
at java.io.File.<init>(File.java:366)
at com.utils.ConfigLoader.loadConfigFilePath(ConfigLoader.java:87)
handeling vfs的解决方法是什么?
答案 0 :(得分:2)
您不得尝试将资源从类路径转换为文件。如果它在WAR / JAR中,它甚至可能不是文件。 File类仅表示文件系统对象。
答案 1 :(得分:2)
由于您正在加载资源(并且它们可能是或可能不是文件,只要想象这个属性文件打包到jar / war中),为什么不在URL对象上使用openStream()
?然后只需从BufferedStream中读取内容就可以了!就是这样!