Ada*_*ith 3 java resources jar double-click
我刚刚发布了这个问题:如何通过双击单个文件来分发我的Java程序以便它可以运行?当我让可运行的jar工作时,很多东西都不能按照我想要的方式工作,因为我的程序找不到我想要使用的资源,比如图像和SQLite数据库文件.
在我的文件系统中,我在img文件夹中有几个.png图像,并且在项目的根文件夹中有一个名为test.db的数据库
当我的项目在Eclipse中时,我使用以下内容访问我的图像:
BufferedImage bufImg = ImageIO.read(new File("img/anImage.png"))
Run Code Online (Sandbox Code Playgroud)
我使用以下方法连接到我的SQLite数据库:
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Run Code Online (Sandbox Code Playgroud)
现在,当我双击我新创建的runnable-jar时,无法找到资源.我想知道我应该如何访问它们,并且当它不在IDE中时让我的程序工作.
我也想知道如何看待异常是什么(如果可能的话).因为现在,有些页面保持灰色,因为它们没有加载,因为(我猜)有些资源无法找到,但我不知道它是否只是导致问题的数据库,或者它是否也是图像.
非常感谢,并且抱歉在如此短的时间内提出两个相关问题!
Jar中没有文件,只有资源,因此大多数使用文件的方法也会接受资源.
例如,ImageIO.read(...)有一个接受URL的重载和一个接受InputStream的重载.所以试试吧
BufferedImage bufImg = ImageIO.read(MyClass.class.
         getResourceAsStream("img/anImage.png"));
Run Code Online (Sandbox Code Playgroud)
只需确保使用相对于类文件位置和实际类名的路径,或 this.getClass()
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           946 次  |  
        
|   最近记录:  |