如何从java运行azure-cli命令

问题描述:

我在我的mac中安装了azure-cli,并且可以成功执行来自cli的所有azure命令。我想从一个Java应用程序做同样的事情。我见过使用REST端点和azure-sdk-for-java的示例。但我想要的是直接从java执行azure-cli命令。如何从java运行azure-cli命令

我试着从java程序运行'azure登录',但我得到了以下错误。

不能运行程序“蔚蓝”:错误= 2,没有这样的文件或目录

+1

我不得不提供完整的azure路径。例如,Runtime.getRunTime.exec('/ usr/local/bin/azure account show')工作。 –

的问题是缺乏PATH变量中。如果您想要享受您在命令行上找到的相同的“查找命令”功能,则需要在Java程序中以某种方式进行设置:从环境中导入PATH变量,将其设置在正在编写的代码中,或任何混合物涵盖您的需求。

给出绝对(完整)路径是最可靠的方法,但您可能不希望在源代码中读取如此长的命令名称。

+0

'System.getenv(“PATH”)。split(“:”)'是一个好的开始。然后你必须遍历每个条目并检查文件是否存在于该文件夹中。 –

@harshithabt根据我的经验,问题是由命令azure造成的,无法在PATH中列出的目录中搜索。有两种方法可以解决Java中运行命令的问题,请参阅下文。

  1. 设置环境变量PATH当前壳会话或配置文件~/.profile(或~/.bashrc)。

    • 如果你在一个shell会话命令export PATH=<your-node-path>/bin:$PATH,你只在当前shell会话中运行了蔚蓝色命令的Java程序,甚至通过Java IDE必须在当前shell会话(打开运行它意味着你应该通过命令<your-ide-path>/eclipse打开Eclipse)。
    • 如果配置文件~/.profile~/bashrc添加如下节点运行时,请确保配置文件已在本届会议上通过命令source ~/.profile重新加载或重新启动通过注销&登录或重新启动会话。
  2. 一个简单的方法是,将所述命令链接到PATH列出的显示目录,如/bin。你只需要运行下面的命令。

    须藤LN -s /斌/节点/斌/节点 须藤LN -s /箱/天蓝色/斌/蔚蓝

然后你就可以成功地从Java运行Azure的CLI命令。