我想访问我的项目“\src\main\resources”的资源形式,但出于任何原因我只能访问目标类。
我认为用户@VGR 已经回答了这个问题。换一种说法来澄清一下:
- 您将资源放在
/src/main/resources 文件夹中,这些资源将在您构建项目时按原样复制到/target/classes 文件夹中。
示例
src/main/resouces/123.txt -> target/classes/123.txt
src/main/resources/myresources/145.txt -> target/classes/myresources/145.txt
...
现在,如果您在 IDE 中运行该程序,您将观察到以下内容:
System.out.println(Main.class.getResource("/123.txt"));
输出:file:/C:/Users/Raul/workspace/Serial/target/classes/123.txt
System.out.println(Main.class.getResource("/myresources/145.txt"));
输出:file:/C:/Users/Raul/workspace/Serial/target/classes/myresources/145.txt
但是如果您打开生成的jar 文件,您将看不到target 文件夹,因为文件123.txt 将位于jar 文件和文件的根目录下145.txt 将在文件夹 myresources/145.txt 下。
文件夹目标只是构建工具的输出目录,不会打包到你的jar文件中。
现在回答以下问题:
问题是我不知道如何将目标类导出到我的 jar 中,或者如何将“src/main/ressources”作为返回值。
要回答这个问题,您必须查看项目根目录中的 pom.xml 文件。其中应该有一个<packaging>jar</packaging> 条目。如果是这样,您可以按如下方式创建 jar 文件:
选项 1:从命令行
mvn clean install
jar 文件将被创建并复制到文件夹target。
选项 2:在 Eclipse 中(例如)
right click on the pom.xml > Run AS > Maven install
jar 文件也应该生成并复制到文件夹target。
注意:在您的屏幕截图中有两个 jar 文件:core-0.0.1-SNAPSHOT.jar 和 Serial-0.0.1-SNAPSHOT.jar;在生成 jar 文件之前删除它们(mvn clean 或右键单击 > Run AS > Maven clean)。原因是 Maven 只能为每个 Maven 模块/项目生成一个 jar 文件,afaik。