繁体   English   中英

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

[英]How to access my applications' resources inside a runnable jar?

我刚刚发布了这个问题: 如何通过双击单个文件来分发我的Java程序以便它可以运行? 当我让可运行的jar工作时,很多东西都不能按照我想要的方式工作,因为我的程序找不到我想要使用的资源,比如图像和SQLite数据库文件。

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

当我的项目在Eclipse中时,我使用以下内容访问我的图像:

BufferedImage bufImg = ImageIO.read(new File("img/anImage.png"))

我使用以下方法连接到我的SQLite数据库:

Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:test.db");

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

我还想知道如何看待异常是什么(如果可能的话)。 因为现在,有些页面保持灰色,因为它们没有加载,因为(我猜)有些资源无法找到,但我不知道它是否只是导致问题的数据库,或者它是否也是图像。

非常感谢,并且抱歉在如此短的时间内提出两个相关问题!

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

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

BufferedImage bufImg = ImageIO.read(MyClass.class.
         getResourceAsStream("img/anImage.png"));

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM