今天早上我在 Windows 上安装了 ec2 命令行工具。当我尝试ec2-describe-instances
在 git bash 中运行命令时,我得到了以下输出:
Exception in thread "main" java.lang.NoClassDefFoundError: com/amazon/aes/webservices/client/cmd/DescribeInstances
Caused by: java.lang.ClassNotFoundException:
com.amazon.aes.webservices.client.cmd.DescribeInstances
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.amazon.aes.webservices.client.cmd.DescribeInstances.
Program will exit.
但是如果我只打开标准cmd
,一切都会正常。我希望能够使用我的 git bash 来做所有事情。我注意到 git bash 只使用 cmd 提示符,但带有额外的选项。git bash 的快捷方式在目标中包含以下内容:
C:\Windows\System32\cmd.exe /c ""C:\Program Files\Git\bin\sh.exe" --login -i"
如何让 ec2 命令行工具在 git bash 中运行?
答案1
答案2
不同之处在于 Git Bash (MINGW) 不会将某些环境变量从 Windows 路径格式转换为 *nix 路径格式。它会转换 PATH,但不会转换 EC2_HOME 或 CLASSPATH。
我遇到了同样的错误,然后在 Git Bash 中设置这两个环境变量后,ec2 命令行运行良好:
导出 CLASSPATH="/c/Program Files/ec2-api-tools-1.6.6.3/lib" 导出 EC2_HOME="/c/Program Files/ec2-api-tools-1.6.6.3"
您可以将其添加到 .bash_profile 以便在启动 Git Bash 时自动设置它(而不是更改 Windows 环境变量),这样它可以在 Git Bash 和 Windows 命令行中工作。
答案3
即使在 Windows 上的 git-bash 中,您也可以通过键入“cmd”进入 CMD 模式,然后以正常 cmd 方式使用命令。
所以,您甚至可以尝试一下.....这将免除您为不同的任务打开不同的控制台。
答案4
您的问题是未找到类。似乎您的 bash shell 无法访问 cmd shell 所具有的相同环境。设置正确的环境,bash shell 应该可以工作。