文件名,目录名或卷标语法是不正确的java

noo*_*der 2 java

所以我现在正在尝试添加Security Certificate我对Java的支持Keystore.我可以cmd使用存储在String中的值轻松地完成此操作temp,但我希望能够在我的java代码中执行此操作.我正在使用以下代码来执行此操作,但是我收到以下错误The filename, directory name, or volume label syntax is incorrect.

    String java_Home = System.getProperty("java.home");
    java_Home = java_Home + "\\lib\\security";
    java_Home = java_Home.trim();

    String temp = "..\\..\\bin\\keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias RandomKeyName -file C:\\Users\\Chris\\Desktop\\RandomKey.crt";
    temp = temp.trim();

    String[] commands = {"cmd.exe", "/c", "cd " + java_Home, temp};

    ProcessBuilder builder = new ProcessBuilder(commands);
    builder.redirectErrorStream(true);
    Process p = builder.start();
    builder.command();
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line;
    while (true) {
        line = r.readLine();
        if (line == null) {
            break;
        }
        System.out.println(line);
    }
Run Code Online (Sandbox Code Playgroud)

我查找了这个错误并在错误https://technet.microsoft.com/en-us/library/cc956689.aspx.上找到了以下页面,但我仍然无法解决问题.我知道它有点小,但我看不到它.有谁知道如何解决这一问题?

TmT*_*ron 6

  • 使用ProcessBuilder.directory设置工作目录(到keytool所在的位置)然后
  • 在构造函数中使用keytool作为命令,然后单独使用该程序的参数

ProcessBuilder的类文档有一个很好的例子