Java getSystemResourceAsStream无法找到资源
我需要从文件系统中读取XML文件 读取XML的代码位于jar文件中,我无法修改该代码Java getSystemResourceAsStream无法找到资源,java,file-io,ioexception,Java,File Io,Ioexception,我需要从文件系统中读取XML文件 读取XML的代码位于jar文件中,我无法修改该代码 ClassLoader.getSystemResourceAsStream('Config.xml'); 我尝试在类路径中设置Config.xml的位置,以及在命令行中设置路径 SET CLASSPATH=C:\opt\conf 及 但什么都没用 每次我运行代码时都会出现异常 Caused by: java.io.IOException: Could not find resource Config.xml
ClassLoader.getSystemResourceAsStream('Config.xml');
我尝试在类路径中设置Config.xml的位置,以及在命令行中设置路径
SET CLASSPATH=C:\opt\conf
及
但什么都没用
每次我运行代码时都会出现异常
Caused by: java.io.IOException: Could not find resource Config.xml
需要有关如何从文件系统读取此config.xml的帮助。我需要找到一种方法将文件放在某个位置或设置类路径,以便无法修改的代码可以读取config.xml
我已经在谷歌上搜索了很多,并试图实现这些解决方案,但没有任何效果。下面是一种从罐子中读取墨水的方法:
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;
}
}
public对象[]readJARFiles(字符串jarName,字符串后缀)抛出FileNotFoundException{
jarName.replaceAll(“/”,“\\”);
ArrayListobjects=新的ArrayList();
文件f;
f=新文件(jarName);
f=新文件(jarName);
如果(f.exists()){
试一试{
JarInputStream jarFile;
jarFile=newjarinputstream(newfileinputstream(jarName));
JarEntry-JarEntry;
while(true){
jarEntry=jarFile.getNextJarEntry();
if(jarEntry==null){
打破
}
if(jarEntry.getName().endsWith(后缀)){
添加(jarEntry);
}
/*对象tempObject;
tempObject=Class.forName(jarEntry.getName()。
替换全部(“/”、“\\.”);
tempObject.substring(0,jarEntry)。
getName().length()-6))*/
}
}捕获(例外情况除外){
System.out.println(“错误!类中的ReadFiles--”+ex.toString());
System.out.println();
}
Object[]returnArray=新对象[objects.size()];
System.out.println(returnArray.length);
对于(int n=0;objects.size()
我可以用一种不同的方法来实现这一点
在执行jar的shell脚本中,我添加了一个命令来更新jar文件,以便在执行jar之前包含config.xml
jar uf encrypt.jar Config.xml
java -jar encrypt.jar P password
如果不存在,这会将Config.xml
添加到jar中,如果存在,则会更新。
然后,当我执行jar时,
Config.xml
将在jar中可用。我需要从一个位置读取xml,这意味着我必须将文件放在某个位置,以便现有逻辑可以找到该文件。CLASSPATH
env变量不一定是真的。如何启动应用程序?我正在执行一个shell脚本java-jar encrypt.jar p password
jar uf encrypt.jar Config.xml
java -jar encrypt.jar P password