如何在Java中引用资源?
我需要读取代码中的文件。它实际上位于此处:
C:\eclipseWorkspace\ProjectA\src\com\company\somePackage\MyFile.txt
我将其放在源包中,以便在创建可运行的jar文件(导出-> Runnable
JAR文件)时将其包含在jar中。最初,我将其放在项目根目录中(并尝试了一个普通的子文件夹),但导出文件并未将其包含在jar中。
如果在我的代码中,我这样做:
File myFile = new File("com\\company\\somePackage\\MyFile.txt");
jar文件正确地找到了该文件,但是在本地运行(运行方式-> Java Main应用程序)会引发文件未找到异常,因为它希望它是:
File myFile = new File("src\\com\\company\\somePackage\\MyFile.txt");
但这在我的jar文件中失败。所以我的问题是,如何使此概念适用于本地运行和在jar文件中运行?
回答:
使用ClassLoader.getResourceAsStream
或Class.getResourceAsStream
。两者之间的主要区别在于,该ClassLoader
版本始终使用“绝对”路径(在jar文件或任何其他文件中),而该Class
版本是相对于类本身的,除非您使用/前缀。
因此,如果您有一个类,com.company.somePackage.SomeClass
并且com.company.other.AnyClass
(在与资源相同的类加载器中)可以使用:
SomeClass.class.getResourceAsStream("MyFile.txt")
要么
AnyClass.class.getClassLoader() .getResourceAsStream("com/company/somePackage/MyFile.txt");
要么
AnyClass.class.getResourceAsStream("/com/company/somePackage/MyFile.txt");
以上是 如何在Java中引用资源? 的全部内容, 来源链接: utcz.com/qa/404121.html