我有以下问题。 我的项目结构是典型的maven Java项目结构:
src/main/java - project .java files
src/main/resources - project resources (log4j2.xml)
src/test/java - .java files for tests
src/test/resources - testng.xml file
在src / main / java中,我还有一个包含JavaScript文件的包(我在Java代码中以编程方式执行的一些脚本)位于以下位置:src/main/java/js/scripts/
当然,我可以访问'脚本中的* .js文件。我正在运行测试的文件夹 - 我只是使用FileUtils.readFileToString(new File(pathTo_jsFile))
然而,在使用maven编译项目后,这已不再有效。
我无法使用要放在现有软件包(/ js / scripts /)中的文件进行编译 - 我能够将非java文件添加到.jar的唯一方法是将它们作为资源添加到pom.xml中,但随后它们将被添加到.jar文件的根目录中。
我无法从.jar文件中读取任何内容。
答案 0 :(得分:0)
首先,您应该将JavaScript文件放入src / main / resources文件夹中。在那里,他们应该由maven打包到.jar文件中,而不需要maven的任何特殊处理。您可以将文件夹结构保留在资源文件夹中。
其次,您可以借助ClassLoader访问Java中的资源:
getClass().getClassLoader().getResourceAsStream("js/scripts/myScriptfile.js");
这应该将javascript文件作为输入流。如果您更喜欢该文件的URL(是的,当它包含在JAR文件中时也可以使用),只需使用getResource(...)
而不是getResourceAsStream(...)
。