如何在导入的Java项目中加载文件?

如何在导入的Java项目中加载文件?,java,file,path,project,relative-path,Java,File,Path,Project,Relative Path,我正在开发一个实现常见功能的Java项目。这个项目使用一些xslt文件。实际上,我使用相对路径“file/xslt”打开这些文件,这是有效的(默认路径是“/”位于文件系统中的“PLACE1”,因此获得的路径是“PLACE1/file/xslt”) 然后我创建一个新项目,导入上一个项目并尝试使用其功能,但显然这不起作用:在库中,所需xslt文件的相对路径是使用第二个项目的默认路径计算的(位于文件系统中的“PLACE2”,因此获得的路径是“PLACE2/file/xslt”) 如何管理此问题?将xs

我正在开发一个实现常见功能的Java项目。这个项目使用一些xslt文件。实际上,我使用相对路径“file/xslt”打开这些文件,这是有效的(默认路径是“/”位于文件系统中的“PLACE1”,因此获得的路径是“PLACE1/file/xslt”)

然后我创建一个新项目,导入上一个项目并尝试使用其功能,但显然这不起作用:在库中,所需xslt文件的相对路径是使用第二个项目的默认路径计算的(位于文件系统中的“PLACE2”,因此获得的路径是“PLACE2/file/xslt”)


如何管理此问题?

将xslt文件与使用它们的类放在同一个包中(或放在项目的源根目录中),然后使用class.getResourceAsStream,路径为“file.xslt”或“/file.xslt”-此方法搜索指定资源的类路径

这样,在构建项目时,资源(如这些xslt文件)将被复制到带有*.class文件的适当目录中,并相应地放置在jar文件中

例如,当类MyClass和文件1.xslt位于同一个包中时:

InputStream xsltIn = MyClass.class.getResourceAsStream ("1.xslt");
InputStream xsltIn = MyClass.class.getResourceAsStream ("/2.xslt");
如果文件2.xslt位于源根目录中(默认无名称包):