2

我有 Java webapp,我正在尝试从 classpth 读取文件。

 if (fileName == null){
        fileName = Thread.currentThread().getContextClassLoader().getResource("config.properties");
    }
objFile = new File(fileName.toURI());

我的类路径中有 config.properties。WEB-INF/类。当我在本地检查时,它会给出: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)

处理 vfs 的解决方法是什么?

4

2 回答 2

3

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

于 2012-05-03T10:03:59.357 回答
2

由于您正在加载资源(它们可能是文件,也可能不是文件,想象一下这个属性文件打包到 jar/war 中),为什么不在openStream()URL 对象上使用呢?然后只需从返回的 BufferedStream 中读取内容即可!

于 2012-05-03T10:13:25.933 回答