当前位置: 首页 > 知识库问答 >
问题:

使用maven构建后,未找到src/main/resources中的资源

景修杰
2023-03-14

您好,我正在我的java应用程序中使用来自src / main /resources的配置文件。我在课堂上读到它,就像这样:

new BufferedReader(new FileReader(new File("src/main/resources/config.txt")));

所以现在我用maven使用mvn assembly:assembly来构建这个。这是我的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)

但是当我右键单击组装好的罐子时,我可以看到里面,有人知道我做错了什么吗?

共有3个答案

常源
2023-03-14

您放在src/main/resources中的资源将在构建过程中被复制到target/classes,可以使用:

...this.getClass().getResourceAsStream("/config.txt");
华涵意
2023-03-14

FileReader 从文件系统上的文件读取。

也许您打算使用类似的方法从类路径加载文件

// this will look in src/main/resources before building and myjar.jar! after building.
InputStream is = MyClass.class.getClassloader()
                     .getResourceAsStream("config.txt");

或者,您可以在读取文件之前从jar中提取文件。

刁瀚昂
2023-03-14

来自src/main/Resources的资源将放在类路径的根目录上,因此您需要将资源获取为:

new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/config.txt")));

您可以通过查看maven生成的JAR/WAR文件进行验证,因为您会在归档文件的根目录中找到< code>config.txt。

 类似资料:
  • 问题内容: 您好,我在Java应用程序中使用了src / main / resources中的配置文件。我在我的课堂上这样阅读: 因此,现在我使用Maven使用Maven进行构建。这是我的pom.xml中的内容: 因此,当我运行我的应用程序时,出现此错误: 但是,当我右键单击组装好的罐子时,我可以在里面看到它,有人知道我做错了吗? 问题答案: 来自的资源将放置在类路径的根目录中,因此您需要按以下方

  • 我正在为我的maven项目添加一个可执行的jar测试。我已经编辑了pom文件,以使用src/main/resources中的一个主类。但是,当我尝试运行jar时,它找不到我的主类。有什么想法吗?

  • 我为每个生成环境都有一个自定义属性文件夹。我已经为它定义了配置文件并添加了不同的文件夹。它们会被正确地捡起来。但是,src/main/resources中的资源没有被拾取。如果netbeans 8有什么不同的话,我会使用它。我的问题是一旦激活了不同的概要文件,是否需要在概要文件中重新指定主要资源或测试资源?多谢了。 我正在使用Maven开发一个java web项目。有一些web服务的xml文件(h

  • 我在我的maven项目中的src/main/资源下放置了一个文件,文件名只是temp.txt. 当我试图打开文件时: 我得到一个错误: src/main/资源下的所有文件都放在maven下类路径的根文件夹中。那么为什么程序不能在这里找到文件呢?

  • 问题内容: 我在Maven项目中遇到问题,在该项目中我从src / main / resources / lib文件夹分发dll。 使用maven-assembly-plugin将项目构建为具有依赖项的单个jar。 不幸的是,maven进程在复制过程中损坏了我的dll库,因此它们不再对应用程序有用。 我看过诸如资源过滤之类的概念。 这是我相关的pom.xml 有人有什么想法吗? 我想我需要做这样的

  • 我在一个maven项目中遇到了一个问题,在这个项目中,我从src/main/Resources/lib文件夹分发dlls。 该项目使用maven assembly插件构建为一个具有依赖项的jar。 不幸的是,maven进程正在复制过程中损坏我的dll库,因此它们对应用程序不再有用。 我已经了解了资源过滤等概念。 这是我的相关pom。xml 有人有什么想法吗? 我想我需要做一些像这样的事情,但到目前