2015-09-17 133 views
0

我使用NetBeans編寫了一個工具,在IDE中運行它時它正在工作。我已將工具所需的所有源文件放入resources文件夾中。構建後Java程序無法運行

Build和Clean之後程序沒有啓動,它拋出一個Exception - > File not found。

我使用相對路徑來使用這樣我需要的數據,例如:

view.jIconRed1.setIcon(
    new javax.swing.ImageIcon(
    getClass().getResource("/usaTrafficResearchTool/resources/Icons/CheckMark22x20.png"))); 

而且它的正常工作,直到我建立它。我嘗試了一些東西清理並生成後甚至沒有工作了:

異常在線程 「AWT-EventQueue的-0」 顯示java.lang.NullPointerException

更新:

謝謝你所有的幫助!讚賞這一點。

這裏的堆棧跟蹤(「第一」之一,它不能找到它應該從閱讀.TXT):

C:\Users\rkryp_000>java -jar "D:\Raffa\Dokumente\USATrafficTool_V2.1\USATrafficLawResearchTool\dist\USATrafficLawResearchTool.jar" 

Sep 24, 2015 12:53:32 PM presenter.Presenter getStateLinesFromTxt 
SCHWERWIEGEND: null 
java.io.FileNotFoundException:  file:\D:\Raffa\Dokumente\USATrafficTool_V2.1\USATrafficLawResearchTool\dist\USATrafficLawResearchTool.jar!\usaTrafficResearchTool\resources\Data\stateResources.txt 
(Die Syntax f³r den Dateinamen, Verzeichnisnamen oder die Datentrõgerbezeichnung ist falsch) 

(英語:語法的文件名,文件夾名或姓名該驅動器的錯誤)

at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at presenter.Presenter.getStateLinesFromTxt(Presenter.java:89) 
    at presenter.Presenter.setStateList(Presenter.java:63) 
    at presenter.Presenter.main(Presenter.java:194) 

這裏是我的FileReader樣子:

private static void setStateList() throws URISyntaxException { 
    URL fileNameAsUrl = MainScreen.class.getClassLoader().getResource("usaTrafficResearchTool/resources/Data/stateResources.txt"); 


private static List getStateLinesFromTxt(URL fileNameAsUrl) { 
    List array = new List(); 
try { 
    BufferedReader reader = new BufferedReader(new FileReader(new File(fileNameAsUrl.getFile()))); 
    String line; 

我如果檢查到.jar文件被正確打包,看起來如此,.txt文件的路徑實際上是正確的。

感謝您的支持!

+0

你可以發佈堆棧跟蹤嗎? – shan1024

回答

-1

你的照片在c盤上? 如果是那麼你必須寫「c:/ usaTraffic ...」

+0

OP正在搜索類路徑('getResource'),而不是文件系統。 – Andreas

0

你正在尋找類路徑中的文件,所以圖像沒有正確打包到jar文件中。

打開jar文件,例如使用WinZip來查看文件是否存在。如果沒有,修復構建腳本。

+0

我打開了文件,所有內容都包含在內,所以我不知道它爲什麼說它找不到給定路徑下的文件。 – Raffinski

0

當您使用相對路徑時,Java會查找與當前正在運行的文件相關的文件,因此Java在IDE中運行它時可能會找到該文件,但在您嘗試在您的webserver中運行時找不到該文件。 getClass()。getResource(...)查找與類路徑相關的文件,這意味着所有編譯後的.class文件位於jar中的位置。

確保該文件包含在jar中,如果沒有,那麼在IDE中可能有一個選項,並確保jar在jar中的路徑與IDE中的相同。

0

CheckMark22x20.png文件中src/resources/Icons/src/resources/Icons/CheckMark22x20.png)文件夾,並更改代碼以

view.jIconRed1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/Icons/CheckMark22x20.png"))); 

現在清理並生成jar文件。它應該沒有任何問題。