首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在可运行的jar中访问应用程序的资源?

如何在可运行的jar中访问应用程序的资源?
EN

Stack Overflow用户
提问于 2011-08-22 10:00:17
回答 1查看 950关注 0票数 3

我刚刚发布了这个问题:How to distribute my Java program so that it is runnable by double-clicking a single file?,虽然我让runnable jar正常工作,但由于我的程序找不到我想要使用的资源,例如图像和SQLite数据库文件,许多东西都不能按我想要的方式工作。

在我的文件系统中,img文件夹中有几个.png图像,项目根文件夹中有一个名为test.db的数据库

当我的项目在Eclipse中时,我使用如下命令访问我的图像:

代码语言:javascript
复制
BufferedImage bufImg = ImageIO.read(new File("img/anImage.png"))

我使用以下命令连接到我的SQLite数据库:

代码语言:javascript
复制
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:test.db");

现在,当我双击新创建的runnable-jar时,找不到资源。我想知道我应该如何访问它们,以及当我的程序不在IDE中时如何让它工作。

我还想知道如何才能看到例外情况(如果可能的话)。因为现在,一些页面保持灰色是因为它们没有加载,因为(我猜)一些资源找不到,但我不知道是只是数据库造成了问题,还是图像也有问题。

非常感谢和抱歉在这么短的时间内问了两个相关的问题!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 10:03:58

Jar中没有Files,只有资源,所以大多数使用文件的方法也会接受资源。

例如ImageIO.read(...)具有接受URL的重载和接受InputStream的重载。所以试一试

代码语言:javascript
复制
BufferedImage bufImg = ImageIO.read(MyClass.class.
         getResourceAsStream("img/anImage.png"));

只需确保使用相对于类文件位置和实际类名的路径,即this.getClass()

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7142479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档