如何在jar文件中访问资源(Excel文件)
您好我已将我的java项目导出为可执行jar文件。 在我的项目中我正在访问包含一些数据的Excel文件。 现在,当我尝试访问该文件时,我无法访问Excel文件。
我的项目结构是:
Java_Project_Folder
– src_Folder
– resources_Folder(包含excel文件)
我正在访问excel文件,如
FileInputStream file=new FileInputStream(new File(System.getProperty("user.dir") +File.separator+"resources"+File.separator+"Excel.xlsx"));
我尝试使用getResourceAsStream
访问此文件,如:
FileInputStream file=(FileInputStream) this.getClass().getResourceAsStream ("/resources/Excel.xlsx");
但我进入是nullexception。 哪有错,任何人都可以帮忙吗?
我试过这个,它对我有用。
我的Test1类在默认包中,只是检查你的访问类在任何包中的位置,如果是,那么从类路径返回到精确资源文件夹,就像这个“../”
public class Test1 { public static void main(String[] args) { new Test1(); } Test1(){ BufferedInputStream file= (BufferedInputStream) this.getClass().getResourceAsStream("resources/a.txt"); try { System.out.println((char)file.read()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
第一步是在项目中包含excel文件本身。 您可以像显示一样创建资源文件夹,但为了确保它包含在您的jar中,您可以将resources文件夹与源代码文件一起添加,以便将其内置到jar中。
然后
InputStream excelContent = this.getClass().getResourceAsStream("/resources/Excel.xlsx");
应该管用。 至少从一个post开始,如果使用ClassLoader,前导斜杠也可能会搞乱。
getClass().getResourceAsStream("/a/b/c.xml") ==> a/b/c.xml getClass().getResourceAsStream("a/b/c.xml") ==> com/example/a/b/c.xml getClass().getClassLoader().getResourceAsStream("a/b/c.xml") ==> a/b/c.xml getClass().getClassLoader().getResourceAsStream("/a/b/c.xml") ==> Incorrect
ref: getResourceAsStream在新环境下失败了吗?
同样在eclipse中,您可以将resources文件夹设置为源文件夹,如下所示:
在eclipse项目的属性中,转到java构建路径,选择源,并检查是否添加了所有需要的源fodler(作为源文件夹)。 如果缺少某些,只需使用添加源…按钮手动添加它们
ref: Eclipse中的Java资源文件夹错误
我打赌你的项目中没有名为resources
包。
尝试使用Class。#getResourceAsStream是要走的路。 但是此方法不返回FileInputStream
。 它返回一个InputStream
它是一个接口。
您应该传递资源的绝对名称
InputStream is = getClass().getResourceAsStream("my/pack/age/Excel.xlsx");
excel文件位于目录中的位置
resources/my/pack/age
FileInputStream file =(FileInputStream)this.getClass()。getResourceAsStream(“/ resources / Excel.xlsx”);
为什么需要FileInputStream? 使用
InputStream is = getClass().getResourceAsStream..
其次使用“resources / Excel.xlsx”第三个在构造这样的文件时
新文件(System.getProperty(“user.dir”)+ File.separator +“resources”+ File.separator +“Excel.xlsx”));
难以控制斜线。 使用
new File("parent (userdir property)", "child (resources\Excel.xlsx)")