我正在创建一个Azure PaaS角色,它为java.exe设置PATH变量。我有一个后台任务来做这个。
startupApp。CMD看起来像
setx PATH %PATH%;%CD%jdkbin /m
cscript /NoLogo utilunzip.vbs jdk.zip "%CD%"
Call the bat file to start my application.
当VM启动时,我看到PATH环境变量被正确设置并指向jdkbin文件夹的位置。然而,我的应用程序无法启动错误"java不被识别为内部或外部批处理命令"。
JAVA命令启动我的应用程序
java %JAVA_OPTS% %LOG_OPTS% %LOG4J_OPTS% -cp my_app.jar %MAIN_CLASS%
这是令人困惑的路径,
- 当我登录到虚拟机并打开命令提示符窗口并输入java后,我看到它工作正常。
- 如果我重新启动虚拟机,java命令来启动我的应用程序运行良好,我和我的应用程序也启动良好。
setx与set function有显著区别:
-
set在local cmd上下文中生效。这意味着一旦你退出或关闭cmd窗口,你就失去了环境变量。
-
setx在future cmd上下文中生效。因此,您不会在当前cmd中看到环境变量及其值。
你需要打开一个新的cmd窗口来查看它。
如果你想使用全局和即时,你应该同时使用这两个函数。
描述摘自:http://batcheero.blogspot.de/2008/02/set-and-setx.html