在使用maven构build之后,src / main / resources中的资源未find
你好,我正在使用我的Java应用程序中的src / main / resources的configuration文件。 我正在阅读我的class级,就像这样:
new BufferedReader(new FileReader(new File("src/main/resources/config.txt")));
所以现在我使用mvn assembly:assembly
来构build这个maven。 这是在我的pom.xml中的那一点:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> <configuration> <finalName>TestSuite</finalName> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.some.package.Test</mainClass> </manifest> </archive> </configuration> </plugin>
所以当我运行我的应用程序时,我得到这个错误:
src\main\resources\config.txt (The system cannot find the path specified)
但是当我右键点击我的组装jar我可以看到里面,任何人都知道我在做什么错了?
来自src/main/resources
将被放到classpath的根目录下,所以你需要获取资源:
new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/config.txt")));
您可以通过查看由maven生成的JAR / WAR文件进行validation,因为您可以在归档的根目录中findconfig.txt
文件。
FileReader从文件系统上的文件读取。
也许你打算使用这样的东西从类path加载文件
// this will look in src/main/resources before building and myjar.jar! after building. InputStream is = MyClass.class.getClassloader() .getResourceAsStream("config.txt");
或者,您可以在阅读之前从jar中提取文件。
您在src / main / resources中放置的资源将在构build过程中被复制到可以使用以下目标访问的目标/类:
...this.getClass().getResourceAsStream("/config.txt");
我认为程序集插件将文件放在类path上。 在JAR中的位置将不同于在磁盘上看到的位置。 解压缩生成的JAR并查看文件位于的位置。