Maven 找不到相对路径

Maven cant find relative path

我的问题是路径在项目中时才有效,但当我尝试运行它在我创建的 .jar 中时似乎不起作用

@Override
public void initialize(URL location, ResourceBundle resources) {
    ReadPath("clock/src/main/resources/Csv/Path.txt");
    ReadCsv("clock/src/main/resources/Csv/MondayA.csv");
    ReadCsvL("clock/src/main/resources/Csv/MondayL.csv");
    SetTime();

}

This is how it looks the directories in the project

这是不正确的。您正在使用相对于您的项目路径的 relative 路径。当您创建 jar 文件时,它将无法找到它们,因为您正在搜索的文件 在 jar 文件本身中 .

正确的做法是:

@Override
public void initialize(URL location, ResourceBundle resources) {
    ReadPath(this.getClass().getResource("/Csv/Path.txt").toString());
    ReadCsv(this.getClass().getResource("/Csv/MondayA.csv").toString());
    ReadCsvL(this.getClass().getResource("/Csv/MondayL.csv").toString());
    SetTime();
}

现在路径是 jar 路径,文件是从位于 jar 内的 resources 文件夹中读取的。

------------编辑------------

很可能您的 resources 文件夹未标记为目录文件夹。从您的屏幕截图中,我可以看到您正在使用 VS 代码(使用 java 编码时是个坏主意)。有许多 IDE 可以让您的生活变得更简单,并且让您不再头疼。

我还看到一个pom文件,说明你用的是maven

按照这个these instructions,这是你通过maven标记目录的方式:

<project>
 ...
 <build>
   ...
   <resources>
     <resource>
       <directory>[your folder here]</directory>
     </resource>
   </resources>
   ...
 </build>
 ...
</project>

或者尝试将您的资源文件夹移动到 src/main.