private void act(java.awt.event.MouseEvent evt) {
// TODO 将在此处添加您的处理代码:
String way=jTextField1.getText();//生成证书的位置
String alias=jTextField2.getText();//用户名
String keysize=jTextField3.getText();//秘钥大小
String validity=jTextField5.getText();
String storename=jTextField4.getText();
String dwname=jTextField6.getText();
String zzname=jTextField7.getText();
String city=jTextField8.getText();
String state=jTextField9.getText();
String county=jTextField10.getText();
String mpass=jTextField11.getText();
String pass=String.valueOf(jPasswordField1.getPassword());
String c="keytool -genkey -alias "+alias+" -keyalg RSA -keysize "+keysize+" -keystore "+storename+" -validity "+validity;
this.fun(way,c,pass,dwname,zzname,city,state,county,mpass);
}
String detail="";
private void fun(String way,String c,String pass,String dwname,String zzname,String city,String state,String county,String mpass){
try {
Runtime.getRuntime().exec(way+"\n"+c+"\n"+pass+"\n"+dwname+"\n"+zzname+"\n"+city+"\n"+state+"\n"+county+"\n"+"Y"+"\n"+mpass);
}
catch (IOException k) {
k.printStackTrace();
}
return;
}
这段程序主要的目的就是为了调用keytool输入事先设定好的代码,但是有bug 其实问题就是如何在cmd中批量输入命令 因为有java的朋友都可以试试看 如果运行keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500后会有很多后续的选项要输入 希望大家帮帮忙
------解决方案--------------------
把参数存在数组中.
下面这段代码能生成一个完整的数字证书.你改一下就可以了.
- Java code
Runtime.getRuntime().exec("cmd /c keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500");
------解决方案--------------------
你的命令为何还有 \n 的换行呢? 参考2楼的做法,直接写在命令行里就行了。 缺什么就补充什么!
------解决方案--------------------
同意2楼的
------解决方案--------------------
终于明白楼主的意思了!!!1
Runtime.getRuntime().exec(command);
这个方法有个返回值 Process
从返回的 Process 对象中取输入流与输出流, 然后通过这两个流交互就可以了
未经测试, 不保证正确, 只是提供个思路!!
------解决方案--------------------
2楼是对的。