我试图从JAR文件中另一个包内的一个类访问文件。更具体地说,我创建输入流的类名为ClassA.class,位于包中:com.something.somethingelse,而我尝试使用inputstream打开的文件位于包com.something.storage。我正在调用getResourceAsStream方法,如下所示:
ClassA.class.getResourceAsStream("/com/something/storage/MyFile.txt");
但是,它会抛出IllegalArgumentException,表示输入流不能为null。我尝试将文本文件存储在与ClassA相同的包中,但问题没有出现。只有当它存储在另一个包中时才会发生这种情况。请帮忙。
知道我执行此操作的方法是静态方法也可能有所帮助。这与问题有关吗?
答案 0 :(得分:2)
在com.something.somethingelse
内的班级中,使用以下内容打开信息流:
getClass().getClassLoader().getResourceAsStream("com/something/storage/MyFile.txt");
使用getClassLoader()
以绝对方式指定包路径(不包含第一个/
)。
答案 1 :(得分:1)
ClassA.class.getResourceAsStream( “/ COM /东西/存储/ MyFile.txt的”);
返回null,因为文件“/com/something/storage/MyFile.txt”不存在