getSystemResourceAsStream无法找到资源

时间:2013-05-01 15:03:14

标签: java file-io ioexception

我需要从文件系统中读取XML文件。

读取XML的代码位于jar文件中,我无法修改该代码

ClassLoader.getSystemResourceAsStream('Config.xml');

我尝试在类路径中设置Config.xml的位置以及从命令行

设置路径
SET CLASSPATH=C:\opt\conf

SET PATH=%PATH%;C:\opt\conf

但没有任何效果。

每次我运行代码时都会得到异常

Caused by: java.io.IOException: Could not find resource Config.xml

如何从文件系统中读取此config.xml需要一些帮助。我需要找到一种方法将文件放在某个位置或设置类路径,以便我无法修改的代码可以读取config.xml。

我已经搜索了很多内容并尝试实施解决方案,但没有任何效果。

2 个答案:

答案 0 :(得分:0)

这是一种从jar中读取东西的方法:

public Object[] readJARFiles(String jarName, String suffix) throws FileNotFoundException{
jarName.replaceAll("/", "\\.");
ArrayList<Object>objects = new ArrayList<Object>();
File f;
f = new File(jarName);
f = new File(jarName);
if(f.exists()) {
    try {
    JarInputStream jarFile;
    jarFile = new JarInputStream(new FileInputStream (jarName));
    JarEntry jarEntry;
    while(true) {
        jarEntry = jarFile.getNextJarEntry();
        if(jarEntry == null) {
        break;
        }
        if(jarEntry.getName().endsWith(suffix)){
        objects.add(jarEntry);
        }
       /* Object tempObject;
        tempObject = Class.forName(jarEntry.getName().
         replaceAll("/", "\\."));
            tempObject.substring(0, jarEntry.
            getName().length() - 6));*/
    }
    }catch( Exception ex){
    System.out.println("Error! in class ReadFiles -- " + ex.toString());
    System.out.println();
    }
    Object[] returnArray = new Object[objects.size()];
    System.out.println(returnArray.length);
    for(int n = 0; objects.size() < n; ++n) {
        returnArray[n] = objects.get(n);
    }
    return returnArray;
} else {
    System.out.println("There aren't files to read");
    return null;
}
}

答案 1 :(得分:0)

我能够使用不同的方法做到这一点。

在执行jar的shell脚本中,我添加了一个命令来更新jar文件,以便在执行jar之前包含config.xml

jar uf encrypt.jar Config.xml

java -jar encrypt.jar P password

如果不存在,这会将Config.xml添加到jar中,如果存在则会更新。 然后当我执行jar时,jar中会有Config.xml