gpt4 book ai didi

servlets - 如何在基于 servlet 的项目中获取部署根目录?

转载 作者:IT王子 更新时间:2023-10-29 00:52:18 24 4
gpt4 key购买 nike

我正在尝试从 java 获取基于 servlet 的项目的部署根目录。我正在使用以下代码行来获取路径详细信息。

类型 1:

File directory = new File (".");
try {
System.out.println ("Current directory's canonical path: "
+ directory.getCanonicalPath());
System.out.println ("Current directory's absolute path: "
+ directory.getAbsolutePath());
}catch(Exception e) {
System.out.println("Exceptione is ="+e.getMessage());
}

类型 2:

String currentDir = System.getProperty("user.dir");
System.out.println("Current dir using System:" +currentDir);

从主类执行上述代码时,我正在获取用户目录。当我从服务器端执行时,得到“当前目录使用 System:D:\Apache Tomcat 6.0.16\bin”。但是我的项目位于D:\Apache Tomcat 6.0.16\wepapps\SampleStructs

请给我任何建议并帮助我解决这个问题。

最佳答案

首先,问题的主要原因是当前工作目录与可执行文件位置之间的差异。您应该知道,Linux 中的当前工作目录不是可执行文件所在的目录,而是程序启动的当前目录。

例如,假设您有一个程序 current,它打印出当前目录,它位于 /home/user/scripts/ 中。

如果你这样做:

cd /home/user/scripts
./current

它会打印出:/home/user/scripts/但是,如果您这样做:

cd /home/user/
scripts/current

输出将是:/home/user/

至于可能的解决方案,我发现其中一些有用的是:

  • 引用与类路径相关的项目资源,有关详细信息,请参阅 ClassLoader.getResourceAsStream()
  • 引用您的配置资源,例如与用户主目录相关的属性文件等。
  • 放置所有其他位置,例如媒体目录路径和与上述配置文件类似的位置。
  • 如果所有其他选项都不可用或不实用,请使用 getClass().getProtectionDomain().getCodeSource().getLocation().getPath()。在此处查看有关此方法和一些可能问题的更多信息:How to get the path of a running JAR file?

关于servlets - 如何在基于 servlet 的项目中获取部署根目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com