我正在爲某些串行端口通信創建Java應用程序,並且在應用程序的文件夾中有兩個資源需要在運行時存在。第一種是用作啓動畫面的圖像,另一種是在程序啓動時需要讀取的配置文件。在JAR中引用文件
下面是從Linux中的「樹」命令輸出的一個刪節的版本,這兩個文件,我需要被引用爲「commandSet.config」和「飛濺screen2.png」
.
├── bin
│ ├──...
├── commandSet.config
├── app-manifest.txt
├── splash-screen2.png
└── src
├── events
│ └── InterfaceEvents.java
├── models
│ ├── Command.java
│ └── Phone.java
├── operations
│ ├── Application.java
│ ├── ...
└── views
├── CallDialog.java
├── SplashScreen.java
└── Window.java
我目前引用了下面幾行:
BufferedReader in = new BufferedReader(new FileReader("commandSet.config"));
和
JLabel image = new JLabel(new ImageIcon("splash-screen2.png"));
該W當我從Eclipse運行它時運行得很好,但是一旦我導出到可運行JAR文件就不會被移動,因此沒有被正確地引用。我試圖將它們移動到「src」文件夾中,導致它們被存檔在JAR中,但我仍然無法引用它們。
我對導出Java項目的概念很陌生,所以也許我錯過了一些明顯的東西。如果有人能夠告訴我做到這一點的最佳方式以及未來項目文件系統的最佳方法,我將非常感激。乾杯!
好的,應該在哪裏存儲文件以便以這種方式引用它們? – 2012-07-16 12:13:50
當然,在部署應用程序的JAR或WAR中。由於類加載器在CLASSPATH中查找,因此您需要將它們放在CLASSPATH中。在你的JAR中,這是在清單類路徑中。在WAR中,這是WEB-INF/classes文件夾 – duffymo 2012-07-16 12:24:11
好的,僅供參考,我只使用JAR。我不完全確定你的意思,「你需要他們在CLASSPATH」?我有一個清單文件,其中包含以下內容: Main-Class:operations.Application – 2012-07-16 13:39:51