2011-10-22 68 views
0

我正在用Java進行遊戲。我加載處理文本文件的級別圖。該文本文件位於workspace/src/resources/sprites/misc/level.txt中。當我從Eclipse編譯遊戲時,它完美地工作,0個問題。當我將遊戲導出爲JAR文件或Runnable JAR文件時,如果我打開.jar,則遊戲窗口打開並且遊戲開始,但整個關卡都消失了,主角落入了Limbo。如果在源代碼內部放置錯誤的文件路徑,則會發生同樣的問題。所以我100%的問題是,當我製作JAR文件時,出於某種原因,它會弄亂文本文件的路徑。這很奇怪,因爲它不會在玩家的精靈中發生!我可以看到它,但我看不到關卡。可執行JAR中缺少文本文件? (Java-Eclipse)

另外,我加載像這樣的精靈:

currentSprite = new Sprite(new ImageIcon(getClass().getClassLoader().getResource("sprites/background/pricebox.gif"))); 

和處理文本文件是這樣的:

File f = new File("resources/sprites/misc/level.txt"); 
BufferedReader in = new BufferedReader(new FileReader(f)); 

可能是什麼問題呢?

謝謝。

+0

你是否檢查過你的txt文件存在於你的jar中?你有沒有在導出對話框中選擇所有需要的資源(用於正常的jar導出)? – thomas

+0

是的,我用WinRAR打開.jar文件,並且level.txt文件應該是它的位置... – Rama

回答

3

A File代表文件系統上的文件。當它位於JAR中時,它不是文件系統上的文件。要載入您的資源中加載圖像以同樣的方式 - 作爲一個類路徑資源:

BufferedReader in = new BufferedReader(
    new InputStreamReader(
     getClass().getClassLoader().getResourceAsStream(
      "resources/sprites/misc/level.txt"))); 

或稍多迂迴,而是更類似於你如何加載圖像:

URL resource = getClass().getClassLoader().getResource(
    "resources/sprites/misc/level.txt"); 
BufferedReader in = new BufferedReader(
    new InputStreamReader(resource.openStream())); 
+0

我明白你說的和我所犯的錯誤。我測試了它,並且在編譯時它仍然在工作,但問題仍然存在。 – Rama

+0

然後你有錯誤的路徑。你確定它不應該是「sprites/misc/level.txt」嗎? –