2011-04-09 70 views
0

我正在使用eclipse IDE,並且使用'export-> Runnable Jar'導出了我的項目。在我的代碼,我已加載使用Runnable jar與java -jar運行正常,但雙擊出現問題

URL map1url = this.getClass().getResource("map01.txt"); 

後來

inputmap = new File(map1url.getFile()); 

一張地圖,然後使用

Scanner sc = null; 
    try { 
     sc = new Scanner(inputmap); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

現在,當我打包map01.txt到掃描其數據jar,然後雙擊它,它會運行,但無法找到map01.txt。當我使用java -jar時,它運行,但仍然無法找到地圖。 當我將map01.txt放置在與jar文件相同的目錄中,但實際上並不放在jar中,然後雙擊它時,它會運行,但不會找到映射。如果我使用java -jar運行它,它會運行並加載地圖。這個問題的原因是什麼?我該如何解決它?而map01.txt是唯一不起作用的資源。我已經加載了許多放置在jar文件中的圖像,並且它們都加載並顯示正常。對於圖像我用

URL url = this.getClass().getResource("myImage.gif"); 
    try { 
     BufferedImage myImage = ImageIO.read(url); 
    } catch (IOException e) { 
    }  

爲什麼他們的工作,而不是我的地圖?我該如何解決這個問題,以便我可以將所有資源打包到一個jar中,然後雙擊它運行?

回答

2

當你說「新文件(map1url.getFile())」時,你最終會得到一個java.io.File,它指向當前目錄中的一個文件。如果該文件實際上位於進程的當前目錄中(如果文件位於shell的當前目錄中並且使用「java -jar」,則會發生這種情況;否則這將不起作用;否則不會。

爲什麼不直接使用的getResource()。的OpenStream()來讀取地圖文件?

+0

因爲它必須是一個文件對我來說,掃描。 – Keelx 2011-04-09 22:30:03

+0

不。掃描儀具有接受一個I​​nputStream幾個構造函數(你會得到什麼來自openStream()),它們會一起插入。 – 2011-04-09 22:36:13

相關問題