Java tomcat 中的文件路径

Java filepath in tomcat

我在 tomcat 服务器上有一个 java 应用程序 运行。应用程序需要read/write xml 个文件到一个目录。

我对其进行了编程,以便使用常量从同一目录写入和读取文件

public static final String DICTIONARY_PATH = getRelativePath() + "/res/dictionaries/";

调用此方法

public static String getRelativePath() {
    return new File("").getAbsolutePath();
}

常量用于方法readFromFile(String language)writeToFile(Dictionary dictionary)

当从 IntelliJ 中的主方法 运行 调用这些方法时(出于测试目的),它工作得很好,可以在指定的文件夹中读取和写入文件。

当 运行 在 tomcat 服务器上从应用程序调用这些方法时,它找不到文件,因为它正在 [=35= 的 tomcat/bin 文件夹中查找] 而文件位于 tomcat/webapps/application/WEB-INF/classes/dictionaries

我如何实现方法 getRelativePath() 以便它既可以在 tomcat 服务器上工作,也可以在 IntelliJ 中本地工作(通过调用 main 方法)

您可以使用 Java 中的属性文件来指示 tomcat/webapps/application/WEB-INF/classes/dictionaries 所在的位置。这将帮助您将 tomcat 目录设置为您的 "Actual target"。使用 属性,您始终可以使用相对路径,例如..\..\..\C:\myprojects\ 前往您的 java 项目进行测试。此外,将它们与 env 变量结合使用。请注意,您始终可以设置环境变量并使用 System.getenv(String name).

访问它们

如果您不知道属性文件设置(非常基本的设置)- http://crunchify.com/java-properties-file-how-to-read-config-properties-values-in-java/

通过 prop 文件做事的好处是你的 类 完好无损。您只更改属性文件以指向任何值。如果可能,应避免在 OO 设计中硬编码文件名和配置。

我认为最好使用侦听器来使用上下文参数 class。为此,只需将该路径存储在上下文或 servlet 上下文中。 或者使用 servlet 上下文获取相对路径。