无法从java命令行

时间:2017-04-18 16:25:48

标签: java bash shell

我正在尝试从java运行此脚本shell,但它无效。

我收到此错误消息:

Process exited with an error: 1 (Exit value: 1)

有人可以帮忙吗?

String pwd = "blabla";

String s_key = "0000";

String path = "C:/Files/scripts"; 

CommandLine commandLine = CommandLine.parse("C:\\Program Files (x86)\\Git\\bin\\git.exe");

commandLine.addArgument("fileName.sh");

commandLine.addArgument(password);

commandLine.addArgument(s_key);

DefaultExecutor defaultExecutor = new DefaultExecutor();

ByteArrayOutputStream sdtout = new ByteArrayOutputStream();

ByteArrayOutputStream sdterr = new ByteArrayOutputStream();

PumpStreamHandler streamHandler = new PumpStreamHandler(sdtout, sdterr);

defaultExecutor.setStreamHandler(streamHandler);

defaultExecutor.execute(commandLine);

这是脚本

#!/bin/sh

pwd=$1
s_key=$2
....
echo $pwd

它适用于git bash

  $ ./fileName.sh blabla 0000
  nkfjWmiG7dDnYUmjr6VD0A==

2 个答案:

答案 0 :(得分:1)

有一些要注意的地方。

  1. 如果要运行git bash命令,则需要执行git-bash.exe,在cmd控制台上需要执行此命令:
  2. %windir%\system32\cmd.exe /c ""C:\Program Files\Git\git-bash.exe" --login -i -- D:\temp\test.sh param1"
    
    1. 如果你想从java应用程序执行它是相同的,你需要执行的命令是git-bash.exe而不是git.exe。 这是从java运行命令的示例。我没有使用你正在使用的对象,而是使用简单的java对象。但是,您可以根据代码进行调整。
    2.  public static void main(String[] args) throws IOException {
                String[] command = {"C:\\\\Program Files\\\\Git\\\\git-bash.exe",
                        "D:\\temp\\test.sh",
                        "param1"};
                ProcessBuilder processBuilder = new ProcessBuilder(command);
                processBuilder.redirectErrorStream(true);
                processBuilder.start();
            }
      

答案 1 :(得分:0)

您的代码存在一些问题:

  • 您似乎无法检查程序的stderr / stdout,或检查被抛出的异常。
  • Git.exe不会将shell脚本作为第一个参数。正如@reos所说,您可能需要调用git-bash.exe而不是git.exe