问题
Gradle构建的项目,和传统的Eclipse格式的项目不同,它默认只会编译java文件,不会将图片资源复制到编译目录
所以,这就需要我们手动做一些处理,手动复制资源文件到bin/out/build/classes等编译目录,打包时手动添加资源文件夹到jar包中
向工程中添加资源文件
默认是resources文件夹,建议使用默认文件夹
注意,resources是用来统一管理资源文件的,我们在打包和调用时,并不用这个文件夹,只用文件夹里面的东西,即路径中不包含resources这个单词
在IDE中使用资源文件
我们在IDE中运行代码,和打包成Jar包后再运行代码,本质上是差不多的
IDE中有一个编译目录,这个目录中存放的和Jar包中的内容是一模一样的
我们需要手动将资源文件,全部拷贝到这个编译目录下面
默认路径是build/classes/java/main,这个目录就相当于Jar中classpath的位置
将资源文件打包到Jar包中
在【Project Structure】的打包配置中,我们选中Jar包,就能向Jar包中添加内容,我们将整个resources文件夹添加进去即可
在代码中使用资源文件
//获取编译后,class文件所在的目录
//如果是Jar包,无法获取文件,则获取工作目录下的资源
public static String getClasspathDirectory() {
try {
return Object.class.getResource("/").getFile().toLowerCase();
} catch (Throwable e) {
return System.getProperty("user.dir").toLowerCase().replaceAll("\\\\", "/") + "/";
}
}
//获取资源文件
String file = ResourceUtils.getClasspathDirectory() + "swing/add.png";
由于Jar包中的资源文件,无法以File的形式访问,我们只能将资源文件拷贝到工作目录下面,或者以InputStream的方式访问资源
InputStream stream = Object.class.getResourceAsStream("/swing/add.png");
System.out.println("getResourceAsStream " + stream);