Java Tomcat为AppData返回错误的路径

Java Tomcat为AppData返回错误的路径,java,tomcat,environment-variables,Java,Tomcat,Environment Variables,我正在使用第三方工具内置节点来构建我的java项目。默认情况下,该第三方工具安装在 C:\Users\ZXC\AppData\Roaming\npm\xyz 当我在Eclipse中运行代码时,它运行良好,并使用 System.getenv(“AppData”) 但在tomcat上运行的这段代码给出了这个路径 C:\Windows\System32\config\AppData\Roaming 此路径不正确,此配置文件夹中也没有AppData文件夹。是否有我遗漏的东西,或者System.geten

我正在使用第三方工具内置节点来构建我的java项目。默认情况下,该第三方工具安装在

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

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

System.getenv(“AppData”)

但在tomcat上运行的这段代码给出了这个路径

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


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

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

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

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

然后在应用程序中使用
PATH\u TO\u工具
变量(或选择更好的命名),以避免由于
AppData
用户变量的细节而可能出现的任何进一步的问题。您可以在中查看有关使用
setenv
脚本的更多详细信息。

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