Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从命令行与java交互使用keytool?_Java_Bash_Interface_Interactive - Fatal编程技术网

如何从命令行与java交互使用keytool?

如何从命令行与java交互使用keytool?,java,bash,interface,interactive,Java,Bash,Interface,Interactive,我试过keytool-genkeypair。我必须按enter键,然后输入keytool要求的信息,然后再次按enter键。我试着取消了新的线路和回车,但没有效果。我想先输入信息,然后按enter键一次 import java.io.*; public class Main{ public static void main(String[] args){ Process p; ProcessBuilder pb;

我试过keytool-genkeypair。我必须按enter键,然后输入keytool要求的信息,然后再次按enter键。我试着取消了新的线路和回车,但没有效果。我想先输入信息,然后按enter键一次

    import java.io.*;

    public class Main{
        public static void main(String[] args){
            Process p;
            ProcessBuilder pb;
            DataOutputStream DOS;
            BufferedReader BR;
            OutputStream os;
            InputStream is;
            Console cons = System.console();
            String s;
            while(!(s=cons.readLine()).equals("exit")){
                try{
                    pb = new ProcessBuilder(s.split("\\s"));
                    pb.inheritIO();
                    p = pb.start();
                    os = p.getOutputStream();
                    is = p.getInputStream();
                    DOS = new DataOutputStream(new BufferedOutputStream(os));
                    BR = new BufferedReader(new InputStreamReader(is));
                    byte b;
                    while(p.isAlive()){
                        char[] c = cons.readLine().toCharArray();
                        for(int i=0;i<c.length;i++){
                            if(c[i]!='\r'&c[i]!='\n'){
                                DOS.writeChar(c[i]);
                            }
                        }
                    }
                }catch(Exception e){ System.out.println("Bad Command"); }
            }
        }
    }
import java.io.*;
公共班机{
公共静态void main(字符串[]args){
过程p;
ProcessBuilder pb;
数据输出流DOS;
缓冲剂;
输出流;
输入流为;
Console cons=System.Console();
字符串s;
而(!(s=cons.readLine()).equals(“退出”)){
试一试{
pb=新的ProcessBuilder(s.split(“\\s”);
pb.inheritIO();
p=pb.start();
os=p.getOutputStream();
is=p.getInputStream();
DOS=新的数据输出流(新的缓冲输出流(os));
BR=新的BufferedReader(新的InputStreamReader(is));
字节b;
while(p.isAlive()){
char[]c=cons.readLine().toCharArray();

对于(int i=0;i)您需要将行终止符发送到进程。当
readLine()
删除行终止符时,您必须为它们测试的代码是毫无意义的。只需执行
DOS.write(line+“\r\n”);
,其中
line
readLine()
字符串
结果。您还应该在
readLine()时循环
没有返回null,而
p.isAlive()
。您需要将行终止符发送到进程。当
readLine()
删除行终止符时,您必须测试它们的代码是毫无意义的。只需执行
DOS.write(line+“\r\n”);
,其中
line
readLine()的
字符串
结果
。您还应该在
readLine()
未返回null时循环,而不是在
p.isAlive()时循环。