您好我已将我的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");
但我进入的是null异常。哪有错,任何人都可以帮忙吗?
答案 0 :(得分:2)
第一步是在项目中包含excel文件本身。您可以创建一个像您所示的资源文件夹,但为了确保它包含在您的jar中,您可以将resources文件夹与源代码文件一起添加,以便将其内置到jar中。
然后
InputStream excelContent = this.getClass().getResourceAsStream("/resources/Excel.xlsx");
应该有效。至少从一个帖子开始,如果使用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
参考:getResourceAsStream fails under new environment?
同样在eclipse中,您可以将resources文件夹设置为源文件夹,如下所示:
在eclipse项目的属性中,转到java构建路径,选择源,并检查是否添加了所有需要的源fodler(作为源文件夹)。如果缺少某些,只需使用添加源手动添加它们......按钮
答案 1 :(得分:1)
我打赌你的项目中没有名为resources
的软件包。
尝试使用Class.#getResourceAsStream是可行的方法。但是这种方法不会返回FileInputStream
。它返回一个InputStream
,它是一个接口。
您应该传递资源的绝对名称
InputStream is = getClass().getResourceAsStream("my/pack/age/Excel.xlsx");
excel文件位于目录
中resources/my/pack/age
答案 2 :(得分:0)
我试过这个,它对我有用。
我的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();
}
}
}
答案 3 :(得分:0)
FileInputStream file =(FileInputStream) this.getClass()的getResourceAsStream( “/资源/ Excel.xlsx”);
为什么需要FileInputStream?使用
InputStream is = getClass().getResourceAsStream..
其次使用“resources / Excel.xlsx” 第三,在构建像这样的文件时
新 文件(System.getProperty( “user.dir来”)+文件分割符+ “资源” +文件分割符+ “Excel.xlsx”));
很难控制斜线。使用
new File("parent (userdir property)", "child (resources\Excel.xlsx)")