2013-05-01 230 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