日期:2014-05-20  浏览次数:20724 次

求助关于cmd命令输入的问题
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楼是对的。