我正在一個Java應用程序和程序中使用一些文件,如圖像,本地數據庫和.htm文件(用作幫助文件)。java- jar文件找不到資源
我試圖使訪問這些資源,位置獨立。所以我在包含我的源文件的包中創建了一個名爲resources的子文件夾,並且在那裏放置了所有這些圖像等。我通過.getResource()方法訪問它們,而不是使用路徑。例如,我就是這樣訪問一個圖像資源:
lang_icon=new javax.swing.ImageIcon(getClass().getResource("/myeditor/resources/checked.gif"));
問題是當構建.jar文件時,它無法正常工作。它成功加載圖像,但無法連接到本地數據庫或打開.htm文件。
這裏是我用來訪問.htm文件(它工作正常,當我通過Netbeans運行應用程序)
URL helpFile= getClass().getResource("/myeditor/resources/help/help.htm");
try {
BrowserLauncher launcher = new BrowserLauncher();
launcher.openURLinBrowser(helpFile.toString());
} catch (BrowserLaunchingInitializingException ex) {
Logger.getLogger(mainAppFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedOperatingSystemException ex) {
Logger.getLogger(mainAppFrame.class.getName()).log(Level.SEVERE, null, ex);
}
代碼,這裏是我用來訪問我的本地數據庫的代碼
URL url = getClass().getResource("/myeditor/resources/icddb");
database = new File(url.getFile());
try
{
Class.forName("org.hsqldb.jdbcDriver");
con = DriverManager.getConnection("jdbc:hsqldb:file:" + database+"\\icddb", "sa", "");
當我嘗試通過.jar文件打開.htm文件時,它顯示此錯誤「此文件沒有與其關聯的程序來執行此操作。在控制面板的文件夾選項中創建關聯」。
當我嘗試連接到本地數據庫時,它顯示「嚴重無法重新打開數據庫」。
所有想法都讚賞! 謝謝你,對不起我的英文!
該錯誤顯示它無法打開以下URL:jar:file:C:/ Users/gosling /.../ cancer_registry/editor/dist/editor.jar!/myeditor/resources/help/help.htm – gosling 2010-01-31 13:06:12
因此,該URL指向.jar文件中。您的瀏覽器不會理解這一點,並且您應該通過getResourceAsStream()將該文件解壓縮到臨時目錄,並從那裏打開它。 – 2010-01-31 13:11:34
如果資源「/ myeditor/resources/icddb」是一個數據庫,那麼您在那裏會遇到同樣的問題。另外,你還有問題,即應用程序更新數據庫的位置將被存儲。您不想嘗試更新JAR文件中的數據庫! – 2010-01-31 14:14:20