我在java中使用内置节点的第三方工具进行项目构建。该第三方工具默认安装在
中C:\用户\ ZXC \应用程序数据\漫游\ NPM \ XYZ
当我在Eclipse中运行我的代码时,它运行正常,并使用
为我提供 AppData 的正确路径System.getenv( “应用程序数据”)
但是在tomcat上运行相同的代码给了我这条路径
C:\的Windows \ system32 \设置\应用程序数据\漫游
此路径不正确,此配置文件夹中也没有AppData文件夹。是否有我遗漏的东西,或System.getenv无法在tomcat上运行?
答案 0 :(得分:1)
这是因为当您在Eclipse中运行应用程序时,该进程的所有者是您的Windows用户 - ZXC ,而将Tomcat作为服务运行时,它很可能将其作为LocalSystem和每个用户的CATALINA_BASE/bin/setenv.bat
默认位置不同。
将环境变量传递给Tomcat而不依赖于特定于用户的路径的正确方法是为Windows创建文件CATALINA_HOME/bin/setenv.bat
或set “PATH_TO_TOOL=C:\Users\ZXC\AppData\Roaming\npm\xyz"
(用于* nix环境的setenv.sh)和内部,设置您可能需要在应用程序内使用的任何变量。在这种情况下,内容应如下所示:
PATH_TO_TOOL
然后在您的应用程序AppData
变量中使用(或选择更好的命名),以避免由于setenv
用户变量的具体情况而导致的任何可能的进一步问题。您可以在Tomcat documentation中查看有关{{1}}脚本用法的更多详细信息。