azure - 创建 Azure Paas 角色时未设置 Java PATH

标签 azure azure-worker-roles path-variables

我正在创建一个 Azure PaaS 角色,它为 java.exe 设置 PATH 变量。 我有一个后台任务可以做到这一点。

startupApp.cmd 看起来像

    setx PATH %PATH%;%CD%\jdk\bin\  /m
    cscript /NoLogo util\unzip.vbs jdk.zip "%CD%"

Call the bat file to start my application. 

当 VM 启动时,我看到 PATH 环境变量已正确设置并指向 jdk\bin 文件夹所在的位置。但是,我的应用程序无法启动,并出现错误“java 未被识别为内部或外部批处理命令”。

启动我的应用程序的 JAVA 命令是

java %JAVA_OPTS% %LOG_OPTS% %LOG4J_OPTS% -cp my_app.jar %MAIN_CLASS%

这是令人困惑的路径,

  1. 登录虚拟机并打开命令提示符窗口并输入 java 后,我发现它工作正常。
  2. 如果我重新启动虚拟机,启动我的应用程序的 java 命令会正常运行,并且我和我的应用程序也会正常启动。

最佳答案

setx 和 set 函数之间存在显着差异:

  • set本地cmd上下文中生效。这意味着一旦退出或关闭 cmd 窗口,您就会丢失环境变量。

  • setx future cmd 上下文中生效。所以你不会在当前cmd中看到环境变量及其值。 您需要打开一个新的cmd窗 Eloquent 能看到它。

如果您想全局且立即使用它,您应该并排使用这两个函数。

描述取自:http://batcheero.blogspot.de/2008/02/set-and-setx.html

关于azure - 创建 Azure Paas 角色时未设置 Java PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782201/

相关文章:

linux - 如何设置 bashrc bash_profile

python - 为什么我不想在安装时将 Python.exe 添加到我的系统路径?

javascript - Application Insights 日志记录到错误的目标

postgresql - Postgres 无法在 Azure 中的 Windows Server 2016 上启动

Azure 云服务 - EventProcessor IEventProcessor.ProcessEventsAsync 未命中

Windows路径环境变量

azure - 对于 Windows Azure,Visual Studio 2010 在 "Configure Remote Desktop Connections"上挂起

Azure - 静态 HTML/CSS/JS 作为 Web 应用程序中的虚拟目录

entity-framework - 是否可以从 Azure 角色环境读取 EF Code First 连接字符串

azure - Azure 是否会运行我的辅助角色的 2 个实例?