我正在研究java应用程序,在程序中我使用了一些文件,如图像,本地数据库和.htm文件(用作帮助文件)。
我试图访问这些资源,与位置无关。所以我在包含我的源文件的包中创建了一个名为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文件时,它会显示此错误“此文件没有与之关联的程序来执行此操作。在控制面板的”文件夹选项“中创建关联”。 /> 当我尝试连接到我的本地数据库时,它说“严重无法重新打开数据库” 所有想法都赞赏! 谢谢你,对不起我的英文!
答案 0 :(得分:1)
您可以打印出要求浏览器打开的网址吗?这应该更清楚地表明发生了什么。
我怀疑您从getResource()
获取的网址是指向您的.jar文件中的的网址。因此浏览器将难以打开它。我(也许)将该文件解压缩到一个临时目录并打开浏览器。