我正在一个Java应用程序,并在程序中使用一些文件,如图像,本地数据库和.htm文件(用作帮助文件)。
我试图使这些资源的访问,位置独立。 所以我已经在包含我的源文件,一个名为资源的子文件夹,我已经把所有这些图像,等。 我通过.getResource()方法访问它们,而不是使用path。 例如,这就是我如何访问图像资源:
lang_icon=new javax.swing.ImageIcon(getClass().getResource("/myeditor/resources/checked.gif"));
问题是当构build.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文件时,它显示此错误“此文件没有与其关联的程序来执行此操作。在控制面板中的文件夹选项中创build关联”。
当我尝试连接到本地数据库时,它显示“严重无法重新打开数据库”。
所有的想法赞赏! 谢谢你,对不起我的英文!
你能打印出你要求浏览器打开的URL吗? 这应该更清楚地表明发生了什么事情。
我怀疑你从getResource()
获得的URL是指向你的.jar文件的URL。 因此,浏览器将无法打开。 我会(可能)将该文件解压缩到一个临时目录,并打开浏览器。