首页 > 编程语言 >Java如何获取当前的jar包路径以及如何读取jar包中的资源

Java如何获取当前的jar包路径以及如何读取jar包中的资源

时间:2022-10-30 00:11:28浏览次数:58  
标签:包中 Java image jar static background UI 加载

如何加载jar包中的资源。

1. 比如说我要得到背景图片,源代码中它是

/src/UI/image/background.jpg

那么在jar包中它的路径应该是

/UI/image/background.jpg

路径最前面的/表示根目录,即绝对路径,若没有最左边的/,则表示相对路径。使用哪种方法看自己的需求,这里使用了绝对路径。

加载的时候使用

java.net.URL fileURL = this.getClass().getResource("/UI/image/background.jpg"); 
javax.swing.Image backGround = new ImageIcon(fileURL).getImage();

即可以获得该图片资源。

2. 有时候,我们需要加载文本资源或音乐资源,而文本在Java中是以流对象存在的,这时我们就要使用

InputStream in = this.getClass().getResourceAsStream("/UI/image/background.txt");

加载该资源。


PS:注意这里两种方法的区别,第一种是先得到该文件的路径,再加载该文件资源。第二种则是直接加载该对象。


3.有时候,我们有一些资源类,其中的资源对象都是pulic static final修饰的,这里可以采用这样的方法初始化。

比如说我有一个ImageSource类用来加载各种图片资源,那么可以如下使用

public class ImageSource { 
  static {
    URL fileURL = ImageSource.class.getResource(“/UI/image/background.jpg”);
    BACK_GROUND = new ImageIcon(fileURL).getImage();
  }
  public static final Image BACK_GROUND;
}

这里不能用构造函数初始化,因为构造函数和对象相关,而static变量和对象是无关的,只和类相关。在Java的语法中,类中的static块是不依赖类对象的,因此可以初始化statc对象。同时,static块中不能使用this,这里使用了ImageSource.class代替。



标签:包中,Java,image,jar,static,background,UI,加载
From: https://www.cnblogs.com/exmyth/p/16840280.html

相关文章

  • JAVA-事件监听机制
    packagecom.itheima;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassJFrame11{publicstati......
  • JavaScript
    JavaScriptJavaScript(JS)是一种脚本语言,可以用来更改页面内容,控制多媒体,制作图像动画等.在body标签里面写一个script标签,在script标签里面编写JavaScript代码......
  • JavaWeb-MySQL基础
    JavaWeb-MySQL基础1,数据库相关概念1.1数据库存储和管理数据的仓库,数据是有组织的进行存储。数据库英文名是DataBase,简称DB。数据库就是将数据存储在硬盘上,可......
  • Java顺序结构和分支结构
    Java顺序结构和分支结构1.*顺序结构任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。如果main方法的多行代......
  • JAVA-考勤查询
    packagecom.itheima;importjavax.swing.*;publicclassJFrame09{publicstaticvoidmain(String[]args){JFramejf=newJFrame();jf.s......
  • java8 stream按某个字段分组,允许分组字段是null
    Map<String,List<Dto>>deviceMap=deviceList.stream().collect(Collectors.groupingBy(Dto::getFlowId));场景:如果getFlowId是null.就会包以下错误elementcannotb......
  • 【笔记07】Javascript - 基本概念 - (作用域)
    【笔记07】Javascript-基本概念-(作用域)functiontest(){}通常,我们把函数生成的空间叫做“作用域”,但这么说不精准。作用域属于函数,函数产生了作用域。一切为对象的东西,......
  • JAVA-猜数字游戏GUI
    packagecom.itheima;importjavax.swing.*;publicclassJFrame07{publicstaticvoidmain(String[]args){JFramejf=newJFrame();jf.s......
  • JAVA-聊天室
    packagecom.itheima;importjavax.swing.*;publicclassJFrame06{publicstaticvoidmain(String[]args){JFramejf=newJFrame();jf.s......
  • java 方法
    java中的函数必须放在类中。void和return不能同时存在java中,方法名可以相同,但是当方法名相同的时候,方法的参数不能一样。这属于方法的重复当方法的名字一样,参数不一样......