【问题标题】:System.getProperty("user.dir") gives different path in console and web applicationSystem.getProperty("user.dir") 在控制台和 Web 应用程序中给出不同的路径
【发布时间】:2018-02-15 17:52:56
【问题描述】:

我想了解System.getProperty("user.dir") 在控制台应用程序、Web 应用程序等不同应用程序中的工作原理。

控制台应用程序网络应用程序运行时提供不同的路径。以下是示例-:
在控制台应用程序中运行时,它会打印如下:

D:\eclipse 工作区 mars\ResearchProject

哪个是项目的根目录,java 类文件所在的项目有System.getProperty("user.dir") 行代码。

另一方面,如果我从某个 servlet/service/business/dac java 类运行 System.getProperty("user.dir") 代码,那么它会打印如下:

D:\eclipse-jee-mars-2-win32\eclipse

哪个是eclipse的根目录。

System.getProperty("user.dir") 如何适用于不同类型的应用程序?
有没有办法获取网络应用程序的根目录?

【问题讨论】:

  • 问题的核心是什么?有关“user.dir”的知识或获取 Web 应用程序的根目录?第二个google“java获取web应用的根目录”
  • System.getProperty("user.dir") 返回“用户工作目录”。
  • @JacekCz 我已经更新了问题。
  • @SANTOSHKUMARSINGH 那么为什么它在 Web 应用程序的情况下不返回?

标签: java eclipse file path


【解决方案1】:

System.getProperty("user.dir") 如何适用于不同类型的应用程序?

在所有情况下,它的工作方式完全相同。它返回由启动应用程序的应用程序指定的“当前目录”。

  • 在交互式外壳的情况下,它将是启动应用程序的外壳(或子外壳)的当前目录。

  • 对于 shell 脚本或本机启动器,它将是脚本或启动器设置的当前目录。 (例如,当您使用“catalina.sh”脚本启动 Tomcat 时,该脚本会设置当前目录。)

  • 如果是 Eclipse 启动的应用程序,它将是您正在使用的启动配置设置的当前目录。 default 是项目目录,但您可以在启动配置中覆盖它。

有没有办法获取web应用的根目录?

我假设你的意思是在 web 容器中部署的 webapp 的根目录。

String path = request.getServletContext().getRealPath("/");

更多详情:

但是,通过文件系统访问 webapp 文件存在各种“陷阱”。一是它们随时可能因重新部署而遭到重创。 更好的 方法是使用 getResourceAsStream 访问已部署的 webapp 中的“文件”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    相关资源
    最近更新 更多