2011-08-16 34 views
1

我一直在使用IntelliJ一段時間,我很享受它的一套功能,但我很難讓運行配置爲java applet工作。我有一個使用Swing的預先存在的Java工具,我使用JApplet類將這些GUI對象作爲小程序加載。問題是我有一些我需要加載的配置文件。我從工作目錄加載這些內容,並且據我所知,這個工作目錄通常是小程序所在的目錄。我認爲主要問題是IDEA設置啓動變量:如何在IDEA中設置我的Java applet的工作目錄?

-Didea.launcher.bin.path=IDEA_BIN_DIR 

我想能夠改變這一點,但我似乎無法。我已經嘗試通過編輯小程序運行配置VM參數來覆蓋此標誌,但IDEA將繼續將上面的標誌放入,即使我指定了不同的東西。

因此,簡而言之,我很難加載本地配置文件,因爲我無法在IDEA中爲運行配置設置工作目錄。有人知道如何解決這個問題,或者知道在IDEA中運行使用配置文件的Java小程序的更好方法嗎?

回答

2

出於安全原因,小程序通常在瀏覽器的沙箱中運行,並且此類小程序無法訪問本地計算機的文件系統。

因此,從文件系統加載配置文件通常是一個壞主意,而「工作目錄」對於小程序來說並不是一個有用的術語。

  • 如果這些文件改變很少(即僅由開發原則),你可以把它們放到applet的類文件(即在jar文件或目錄的發展過程中,其中的類將產生),並使用class.getResource().getResourceAsStream()加載它們。

  • 如果配置文件應該定義由網站管理員,把它們放在Web服務器 - 無論是在一些固定的相對位置getCodeBase().getDocumentBase(),或指定它們作爲參數在HTML標記您的applet標記。

  • 如果這些是用戶特定的配置文件(applet應該可以寫入),那麼您需要將它們存儲在服務器上並在登錄後檢索/存儲(即您需要服務器端的某些邏輯) ,或者你將它們存儲在客戶端。

    當前的方法是使用JNLP API(在javax.jnlp。*中) - 有一些接口允許持久性,或加載/存儲數據(用戶擁有FileChooser)。或者,您可以簽署您的小程序並向用戶請求AllPermission - 然後您可以訪問文件系統。

對不起,這些答案沒有你的原始問題(我不使用IDEA),但也許這些幫助你找到另一種方式。

+0

感謝您的回答。我將嘗試在jar文件中添加它,嘗試getResourceAsStream()方法以及試圖獲得用戶的許可。正如你可能已經注意到,使用applet配置的工作目錄似乎很奇怪。這是因爲我們有一個使用此方法的預先存在的桌面應用程序,我試圖用最少的工作將其轉換爲Web應用程序。 – jluzwick

+0

另外,如果沒有人可以在2周或3周內回答IDEA答案,我會將您的答案標記爲正確,因爲它提供了很多有用的幫助。謝謝。 – jluzwick

+0

對於桌面應用程序來說,通過FileInputStream訪問應用程序數據(不是用戶數據)也是一個壞主意......因爲這不允許將數據放入應用程序jar文件中。你依賴於當前目錄。 –

相關問題