使用 cmd 从 java swing 向 Keytool 传递参数

Passing parameters to Keytool from java swing using cmd

我正在尝试为 keytool 创建一个简单的用户界面,以简化证书生成过程。我知道有更好的方法可以做到这一点,创建 java swing 界面并不是最佳解决方案。

我正在从 swing 组件获取必要的参数并将其传递给 keytool,如下所示:

try {
    Process p = Runtime
                    .getRuntime()
                    .exec("cmd /c start cmd.exe /K \"keytool.exe &"+command.toString()+" end\"");
} catch (IOException e) {
    e.printStackTrace();
}

现在的问题是在传递参数后没有任何反应,cmd 仅显示 keytool 中的可用选项。(与在 cmd 中输入 keytool 相同)

这里可以找到command的值 String:

    command.append("keytool -genkey");//hardcoded for now, I'm using this method only
    command.append(" ");
    command.append("-keyalg");
    command.append(" ");
    command.append(algorithm.getSelectedItem()); //comboBox, value RSA/DSA/...
    command.append(" ");
    command.append("-alias");
    command.append(" ");
    command.append(alias.getText());//textfield value signedKey
    command.append(" ");
    command.append("-keystore");
    command.append(" ");
    command.append("selfsigned.jks");//hardcoded for now
    command.append(" ");
    command.append("-validity");
    command.append(" ");
    command.append(validity.getText());//textfield, value 365
    command.append(" ");
    command.append("-keysize");
    command.append(" ");
    command.append(keySize.getText());//depends on selected algorithm, values 2048/1024/...

我是 keytool 的新手,出于某种原因我真的搞不懂这里出了什么问题,是我的方法还是我传递的参数...

P.S:命令示例 字符串:keytool -genkey -keyalg RSA -alias signedKey -keystore selfsigned.jks -validity 365 -keysize 2048

问题出在我用来传递参数的字符串中 cmd /c start cmd.exe /K "keytool.exe &-genkey -keyalg RSA -alias signedKey -keystore selfsigned.jks -validity 365 -keysize 2048 end"

end 造成了问题,一旦它被删除,一切都很好。

特别感谢吉姆·加里森