Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 使用JDK1.6以编程方式对Jar文件进行签名但使用JDK1.7时出错_Java_Android_Jdk1.6_Jarsigner - Fatal编程技术网

Java 使用JDK1.6以编程方式对Jar文件进行签名但使用JDK1.7时出错

Java 使用JDK1.6以编程方式对Jar文件进行签名但使用JDK1.7时出错,java,android,jdk1.6,jarsigner,Java,Android,Jdk1.6,Jarsigner,我们正在开发一个Java实用程序,以编程方式对Jar文件进行签名,但我们面临的问题是为JDK1.6签名Jar,因为它在JDK1.7中正常工作 下面给出了用于对APK文件进行签名的代码段: private void signAPK(){ APK_SIGNER_COMMAND = "jarsigner -verbose -keystore keystore_file.keystore -digestalg SHA1 apk_file.apk Alias_Value -storepass P

我们正在开发一个Java实用程序,以编程方式对Jar文件进行签名,但我们面临的问题是为JDK1.6签名Jar,因为它在JDK1.7中正常工作

下面给出了用于对APK文件进行签名的代码段:

private void signAPK(){

    APK_SIGNER_COMMAND = "jarsigner -verbose -keystore keystore_file.keystore -digestalg SHA1 apk_file.apk Alias_Value -storepass Password_value";

    try {
        System.out.println(APK_SIGNER_COMMAND);
        Process p = Runtime.getRuntime().exec(APK_SIGNER_COMMAND);

        BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));            
        String line=reader.readLine();              
        while(line!=null){ 
            System.out.println(line);
            line=reader.readLine();
        }       

        reader.close();
        p.destroy();
    } catch (IOException e) {           
        e.printStackTrace();
    }
}
对于JDK1.7,jar/apk文件已正确签名,但对于JDK1.6,应用程序在reader readsline String line=reader.readLine;的第行被阻塞;。 有人能帮我解释一下为什么JDK1.6版本不能使用这个功能吗


谢谢。感谢您的帮助。

这是因为您正在使用SHA1,对于JDK1.6,请使用SHA256。你可以在上面签名

更改摘要算法可能会有所帮助

Jarsigner对JDK1.7和JDK1.6使用不同的摘要算法


有人知道这个问题的答案吗?我需要帮助。