在我解释我的问题之前-我已经尝试在已经提出的问题中找到解决方案,但是没有一个起作用;)
我正在尝试读取jar中的文件,而jar是另一个项目的依赖项.该文件位于路径下
/src/main/resources/driver
项目打包到jar文件中.使用pom将资源中的DRIVER包含在jar中:
src/main/resources
*
另外,解压缩jar时,可以看到它已添加到jar的根目录中.
我需要做的是将此文件从jar的内部复制到磁盘上的目录中.只要通过IntelliJ将项目添加为从属项目,一切都可以正常工作.当我将其添加为POM中的依赖项时,我得到了NullPointerException.
我用来加载此文件的代码如下所示:
String sourceFilePath = this.getClass().getClassLoader().getResource(driverFileName).getPath();
我还尝试了不同的方法:
String sourceFilePath = this.getClass().getResource("driver").getPath();
String sourceFilePath = this.getClass().getResource("/driver").getPath();
String sourceFilePath = this.getClass().getClassLoader().getResource("driver").getPath();
String sourceFilePath = this.getClass().getClassLoader().getResource("/driver").getPath();
但是每次尝试都以相同的结果结束:调用getPath()时出现NullPointerException.
我需要解决方案,因为作为依赖项附加的项目是UI测试的框架.到目前为止,我一直在将驱动程序添加到每个需要它们的新项目中,但是这需要时间,这对于想要使用此框架的人来说更加复杂,并且在发布新版本的驱动程序时会遇到很多麻烦.我希望能够简单地为此框架添加一个Maven依赖关系,并能够在此框架内部使用驱动程序.
这里的问题是我需要设置一个具有该驱动程序路径的系统变量.因此,一旦需要驱动程序,我就尝试将其(代码在框架内)复制到外部位置(某个tmp目录).
知道如何解决吗?
解决方法:
像这样使用目标jar类加载器
ClassInOtherJar.class.getClassLoader().getResourceAsStream("filename.xml")
标签:java,maven,jar,dependencies,resources
来源: https://codeday.me/bug/20191012/1897751.html