0

我需要从文件系统中读取 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。

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

4

2 回答 2

0

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

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;
}
}
于 2013-05-01T15:08:43.780 回答
0

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

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

jar uf encrypt.jar Config.xml

java -jar encrypt.jar P password

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

于 2013-05-01T20:41:59.943 回答