URI方案不是“文件”。无法从类路径中读取文件

时间:2012-05-03 09:57:53

标签: java java-io file-handling vfs

我有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的解决方法是什么?

2 个答案:

答案 0 :(得分:2)

您不得尝试将资源从类路径转换为文件。如果它在WAR / JAR中,它甚至可能不是文件。 File类仅表示文件系统对象。

答案 1 :(得分:2)

由于您正在加载资源(并且它们可能是或可能不是文件,只要想象这个属性文件打包到jar / war中),为什么不在URL对象上使用openStream()?然后只需从BufferedStream中读取内容就可以了!就是这样!