【问题标题】:Java filepath in tomcatTomcat中的Java文件路径
【发布时间】:2015-01-23 12:08:29
【问题描述】:

我有一个在 tomcat 服务器上运行的 java 应用程序。应用程序需要读取/写入 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 中运行的 main 方法调用这些方法时(用于测试目的),它可以很好地工作并将文件读取和写入指定文件夹。

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

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

【问题讨论】:

  • 您也可以用不同的方式描述您的问题:您不想使用相对路径,因为这是不可预测的。你总是希望有一个绝对路径。为了支持多个部署环境,该绝对路径必须可根据服务器环境进行配置。

标签: java tomcat intellij-idea relative-path


【解决方案1】:

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

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

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

【讨论】:

  • 我没有使用属性文件或环境变量的经验,您能否举个例子或链接到如何在这种情况下使用它们?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 2014-08-28
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多