【问题标题】:Tomcat returns wrong path for AppDataTomcat 为 AppData 返回错误的路径
【发布时间】:2018-09-08 10:32:06
【问题描述】:

我正在使用 node 中内置的 3rd 方工具来构建我的 java 项目。该第 3 方工具默认安装在

C:\Users\ZXC\AppData\Roaming\npm\xyz

当我在 Eclipse 中运行我的代码时,它运行良好并使用

为我提供了正确的 AppData 路径

System.getenv("AppData")

但是在 tomcat 上运行时相同的代码给了我这条路径

C:\Windows\System32\config\AppData\Roaming

此路径不正确,此配置文件夹中也没有 AppData 文件夹。是不是我遗漏了什么,或者 System.getenv 无法在 tomcat 上运行?

【问题讨论】:

  • 我无法重现您的问题。您能否提供更多信息:[1] Windows 版本 [2] Tomcat 版本 [3] JRE 版本 [4] 您是将 Tomcat 作为 Windows 服务运行,还是从命令行启动它?

标签: java tomcat environment-variables


【解决方案1】:

这是因为当您在 Eclipse 中运行应用程序时,进程的所有者是您的 Windows 用户 - ZXC,而将 Tomcat 作为服务运行,它很可能将其作为 LocalSystem 运行, %AppData% 默认位置每个用户都不同

在不依赖于用户特定路径的情况下将环境变量传递给 Tomcat 的正确方法是为 Windows 创建一个文件 CATALINA_BASE/bin/setenv.batCATALINA_HOME/bin/setenv.bat(setenv.sh 用于 *nix 环境)并在其中设置您可能需要在应用程序内部使用的任何变量。在这种情况下,内容应如下所示:

set “PATH_TO_TOOL=C:\Users\ZXC\AppData\Roaming\npm\xyz"

然后在您的应用程序中使用PATH_TO_TOOL 变量(或选择更好的命名)以避免任何可能的进一步问题,因为AppData 用户变量的细节。您可以在Tomcat documentation 中查看有关setenv 脚本使用的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多