我需要从文件系统中读取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。
我已经搜索了很多内容并尝试实施解决方案,但没有任何效果。
答案 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
。