2013-05-01 149 views
0

我有要求从文件系统读取XML文件。getSystemResourceAsStream无法找到资源

该读取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。

我已经GOOGLE了很多,并试图实施解决方案,但没有奏效。

+0

'CLASSPATH' env变量不一定是事实。你如何开始申请? – home 2013-05-01 16:05:24

+0

我正在执行shell脚本'java -jar encrypt.jar p password' – NullPointerException 2013-05-01 16:27:24

回答

0

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

在正在执行的jar shell脚本,我添加了一个命令来更新jar文件执行的jar

jar uf encrypt.jar Config.xml 

java -jar encrypt.jar P password 

这将Config.xml添加到罐子如果不是之前包括config.xml中目前或将会更新(如果有)。 然后当我执行罐子时,罐子里会出现Config.xml

0

这里有一个方法来读取thiinks形成一个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; 
} 
} 
+0

我需要读取XML表单的位置,这意味着我必须将该文件放在某个位置,以便现有逻辑可以找到该文件。 – NullPointerException 2013-05-01 15:12:45