0
我在我的程序中通過Runtime.getRuntime().exec()
自動創建了一個通過keytool
的SSL證書,它在Windows上工作正常。exec()不能在Debian 7上工作
當我嘗試在Debian 7上運行我的代碼時,它只是不執行該命令。那麼,它確實執行,但它返回錯誤代碼1,這基本上意味着出了問題。
如果我讓我的程序打印要執行的字符串,然後手動執行此命令,那麼一切工作正常。
這裏的一些調試輸出碼:
private static void initKeystore()
{
Scanner scr = new Scanner(System.in);
System.out.println("**** IMPORTANT ****");
System.out.println("You don't have a certificate for using SSL yet.");
System.out.println("We will create it together now!");
System.out.println();
System.out.print("Name of your organisation: ");
String ssl_o = scr.nextLine();
String ssl_ou = ssl_o;
System.out.print("Your name: ");
String ssl_cn = scr.nextLine();
System.out.print("Country code [de/en/fr]: ");
String ssl_c = scr.nextLine();
System.out.print("City: ");
String ssl_l = scr.nextLine();
System.out.print("State: ");
String ssl_st = scr.nextLine();
System.out.print("Password: ");
String pass = new String(scr.nextLine());
String execString = "keytool -genkey -keyalg RSA -alias dreamim -keystore " + KEYSTORE + " -storepass " + pass + " -validity 360 -dname \"cn=" + ssl_cn + ", o=" + ssl_o + ", ou=" + ssl_ou + ", c=" + ssl_c + ", l=" + ssl_l + ", st=" + ssl_st + "\" -keypass " + pass;
System.out.println(execString);
try
{
Process proc = Runtime.getRuntime().exec(execString);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null)
{
System.out.println(line);
}
bufferedReader.close();
proc.waitFor();
System.out.println("Key generation exited with code: " + proc.exitValue());
execString = "keytool -export -keystore " + KEYSTORE + " -storepass " + pass + " -alias dreamim -file DreamIM.crt";
proc = Runtime.getRuntime().exec(execString);
proc.waitFor();
}
catch (Exception e)
{
// TODO: Improve exception handling
e.printStackTrace();
}
scr.close();
}
我的代碼沒有拋出任何異常...... 是否與exec()
和Debian 7(OpenJDK的)任何已知的兼容性問題嗎?
「* exec()和Debian 7(OpenJDK)是否存在任何已知的兼容性問題?*」=>否。顯示你的代碼。 – assylias
'keytool'可以關於參數的順序。你需要顯示一些代碼。 – jww
我編輯了問題並添加了一些代碼。我敢肯定,這不是參數的順序,因爲正如我在我的問題中所說的那樣,當我手動執行keytool命令時,一切正常,在Windows中它也可以自動運行此代碼。這只是Linux不起作用的地方。 – MrPixelDream