2016-09-15 62 views
0

我試圖從.jar(由builder.xml製作)加載.xml文件,但得到一個異常。從我的螞蟻的build.xml從.jar加載xml

代碼:

try { 
xml = new File(this.getClass().getResource("/TaskData.xml").getFile()); 
    } catch (Exception e) { 
     e.printStackTrace(); 

例外,我得到了:

java.io.FileNotFoundException: C:\Users\agent_000\Desktop\....file:\C:\Users\agent_000\Desktop\%d1%85%d1%83\build\sample.jar!\TaskData.xml (

爲什麼不能找到我的課

ant builder code

代碼一個.xml文件?

在此先感謝!

+0

是該文件實際上是在罐子? (用winrar或其他方式打開它) –

+0

@flkes根據mybuild.xml(這是ant文件)sample.jar創建並且是,在此.jar中的TaskData.xml。 –

+0

@ flkes nope,同樣的例外。也許在build.xml中有問題? –

回答

0

你可以像這樣

URL url = new URL("jar:file:/path--to-your Jar !/TaskData.xml"); 
    InputStream is = url.openStream(); 
    System.out.println(is); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    System.out.println(reader.readLine()); 

或詢問的ClassLoader通過的getResourceAsStream返回的InputStream的資源,而不是:

InputStream in = getClass().getResourceAsStream("/TaskData.txt"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
+0

感謝您的回答!但我需要創建一個「文件」類,所以我的類可以解析它 –

+0

你可以嘗試像,File tempFile = File.createTempFile(prefix,suffix); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); IOUtils.copy(in,out); return tempFile; –