Java 从JARB类中读取一个文件,该类在JARA中作为maven依赖项提供

Java 从JARB类中读取一个文件,该类在JARA中作为maven依赖项提供,java,eclipse,maven,jar,Java,Eclipse,Maven,Jar,我有Maven项目X,在其中我添加了Maven依赖项Y,现在在JARY中我有一个静态方法,可以从提供的路径读取文件。从project-X的java类中,要读取的文件的路径被提供给Y的静态方法 要读取的文件位于ProjectX的src/main/resources中 我试过了 File file = new File("abc.txt")); String configFilePath = file.getAbsolutePath(); 这个东西在Windows环境下工作,但在linux环境下失

我有Maven项目X,在其中我添加了Maven依赖项Y,现在在JARY中我有一个静态方法,可以从提供的路径读取文件。从project-X的java类中,要读取的文件的路径被提供给Y的静态方法

要读取的文件位于ProjectX的src/main/resources中

我试过了

File file = new File("abc.txt"));
String configFilePath = file.getAbsolutePath();
这个东西在Windows环境下工作,但在linux环境下失败


在此感谢您提供的任何线索/帮助。

如果您想在资源目录中查找文件,最好的方法是这样做:
file file file=new file(ClassLoader.getSystemResource(“filename”).toURI())顺便说一下,它与依赖项无关。这没有帮助。当我在项目X中添加Jar B的依赖项,并构建项目X时,它从.m2/repository/abc/abc/1.0/xyz.Jar读取Jar B,现在要从Jar B读取一个文件,文件位于项目X的类路径中。这是我的问题。好的,我得到了您想要的maven依赖项。因此,您的文件位于jar文件中,因此它不是真正的文件。您将无法使用它执行任何文件操作,那么为什么要创建一个表示它的文件对象呢?如果您想访问文件的内容,可以这样做:
InputStream is=ClassLoader.getsystemresourceastream(“myTextFile.txt”)然后您可以从InputStream读取内容。没有我的文件在项目X中,我想从项目Y读取它。我已经将项目Y添加到项目X的maven依赖项中。项目Y中的一段代码在运行时从项目X的类路径读取一个文件。这就是问题所在。是的,您的文件在ProjectX中,因此它被打包在ProjectX生成的工件中。可能是某种projectx.jar。这个jar将进入您的本地maven存储库,其他项目将以这种方式访问它。无法从项目y访问项目x的源目录树。但是,您可以通过我编写的类加载器访问projectx.jar的内容。