2016-11-29 333 views
0

我正在爲我的項目製作可運行jar文件。嘗試在Eclipse中使用資源時出現NullPointerException

代碼

public class StandingsCreationHelper 
{ 
    private static final String TEMPLATE_FILENAME = "Standings_Template.xls"; 

public static void createStandingsFile() throws Exception 
{ 
    StandingsCreationHelper sch = new StandingsCreationHelper(); 

    // Get the file from the resources folder 
    File templateFile = new File("TemporaryPlaceHolderExcelFile.xls"); 
    OutputStream outputStream = new FileOutputStream(templateFile); 
    IOUtils.copy(sch.getFile(TEMPLATE_FILENAME), outputStream); 
    outputStream.close(); 
} 
} 

public InputStream getFile(String fileName) 
{ 
    return this.getClass().getClassLoader().getResourceAsStream(fileName); 
} 

public static void main(String[] args) throws Exception 
{ 
    createStandingsFile(); 
} 

項目的結構

enter image description here

問題

當我打包我的代碼在運行的JAR,我的計劃將執行沒有任何問題。但是,如果我從我的IDE(Eclipse)調用主方法,我會收到以下錯誤消息,就好像找不到資源:

線程「main」中的異常java.lang.NullPointerException at org.apache .poi.util.IOUtils.copy(IOUtils.java:182) 在standings.StandingsCreationHelper.createStandingsFile(StandingsCreationHelper.java:153) 在standings.StandingsCreationHelper.main(StandingsCreationHelper.java:222)

感謝預先任何幫助!

+0

'「/resources/Standings_Template.xls」;'??? –

+0

謝謝你的快速回答。改爲提到的字符串仍然返回空指針異常。 –

+0

什麼是null,輸入或輸出? –

回答

2

您正在使用需要文件絕對路徑的getClassLoader()

變化:

public InputStream getFile(String fileName) 
{ 
    return this.getClass().getClassLoader().getResourceAsStream(fileName); 
} 

public InputStream getFile(String fileName) 
{ 
    return this.getClass().getResourceAsStream(fileName); 
} 

現在你可以使用相對路徑,從你的類可見。不要忘記將TEMPLATE_FILENAME更改爲"resources/Standings_Template.xls",如評論中所述。

+0

你走了! 1+ –

+0

謝謝你的回答!不幸的是,這些更改仍然導致NullPointerException。 –

+1

也許嘗試不使用前導斜槓TEMPLATE_FILENAME =「resources/Standings_Template.xls」 – Daniel

相關問題