2017-09-01 77 views
-3

我一直工作在一個Java程序的公司在今年夏天的Java程序,並已接近尾聲。作爲一名新手程序員,我從來沒有製作過使用我創建的文件在其他系統上使用的程序。我的程序使用Apache Poi讀取和寫入Excel,目前使用的Excel文件位於程序指定的特定目錄中。該程序還使用了一些位於代碼指定的目錄中的圖像。生產用於其它系統

我怎麼可能讓其他系統上這個程序可運行?當程序「安裝」在另一個系統上時,程序是否可以創建一個Excel文檔?

目前我使用Eclipse和系統是Windows 7的

+2

爲什麼安裝時需要創建Excel文檔?如果您希望它在其他系統上正常工作,請不要硬編碼路徑。使它們可配置或讓用戶在生成時選擇它。 – Kayaman

+0

正如我所說我是Java新手,我在問我如何使它在其他系統上工作。 –

+1

嘗試在另一個系統上運行它,並解決出現的每個問題。 –

回答

0

您可以打包在一個.jar您的應用程序,其實裏面的.class文件zip文件並資源文件。這些資源文件,如圖像,可以用getClass().getResource("path/x.png")getResourceAsStream拍攝。路徑可以是包相對或絕對的:「/abc/def.jpg」。

這些資源必須是隻讀的(因爲它們是該.jar內)。但是,您可以將Excel 模板存儲爲資源,並將其複製到用戶的目錄。

System.getProperty("user.home") 

將提供用戶的目錄,您可以將資源複製到。

Path appWorkspace = Paths.get(System.getProperty("user.home"), "myapp"); 
Files.createDirectories(appWorkspace); 
Path xlsx = appWorkspace.resolve("untitled.xlsx"); 
Files.copy(getClass().getResourceAsStream("/data/empty.xlsx"), 
    xlsx); 
+0

謝謝,這似乎像什麼,我正在尋找,但我唯一擔心的是被覆蓋的Excel文件,但我認爲我可以只檢查文件是否存在繞開這個問題。 –

+0

'Files.copy'(以及其他功能)具有'StandardCopyOption.REPLACE_EXISTING'和這樣的可變參數的參數。 –

+0

試過測試這段代碼,但我在路徑xlsx行上得到一個空指針異常,應該在我的項目中有一個名爲data的文件夾?此外,untitled.xlsx似乎並未出現在myapp中。 –