使用Openjdk7編譯android原始碼出現"Could not initialize NSS"錯誤的解決辦法
最近在編譯andrioid原始碼時遇到了如下奇葩的Error,一臉三角函式懵逼 o_O!!
Exception in thread "main" java.security.ProviderException: Could not initialize NSS at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:223) at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:224) at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206) at java.security.AccessController.doPrivileged(Native Method) at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206) at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187) at sun.security.jca.ProviderList.loadAll(ProviderList.java:282) at sun.security.jca.ProviderList.removeInvalid(ProviderList.java:299) at sun.security.jca.Providers.getFullProviderList(Providers.java:173) at java.security.Security.insertProviderAt(Security.java:360) at java.security.Security.addProvider(Security.java:407) at com.android.signapk.SignApk.main(SignApk.java:848) Caused by: java.io.IOException: NSS initialization failed at sun.security.pkcs11.Secmod.initialize(Secmod.java:223) at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:218) ... 16 more make[1]: *** [out/target/product/Z018/obj/APPS/framework-res_intermediates/package.apk] 錯誤 1 make[1]: *** 正在等待未完成的任務....
本來編譯是好好的,也不知道怎麼手賤給就弄成這樣了。。。(估計是用了apt-get upgrade....)
So easy,立馬按照常規旅程google唄~
查了一圈後發現悲劇了。。。what! 就沒人遇到過麼?????
額,沒辦法。不能重灌系統,折騰了幾天,終於自己找到了解絕辦法~
特意寫出來,分享給大家。
我的解決路程如下:
1:重新安裝一次Openjdk7,從而避免Openjdk7的NSS配置被我手賤給修改過
(sudo apt-get purge openjdk-7* 刪除後再使用 sudo apt-get install openjdk-7-jdk安裝一次)
2:刪除所有可能和Nss相關的包,刪除方式 sudo apt-get purge libnss*
3:使用sudo apt-get autoremove 刪除不再需要的依賴庫
4:sudo apt-get update更新源
5:
sudo apt-get install libnss3
sudo apt-get install nss-updatedb
sudo apt-get install nss-passwords
sudo apt-get install nsscache
sudo apt-get install libnss3-dbg
sudo apt-get install libnss-db
sudo apt-get install libnss
sudo apt-get install libnss-sss
sudo apt-get install libnss-cache
sudo apt-get install libnss3-dev
sudo apt-get install libnss3
sudo apt-get install libnss3-nssdb
sudo apt-get install libnss3-dev
sudo apt-get install libnss3-1d
sudo apt-get install libnss3-d
安裝如上的包
6:配置好java,確保java和javac -version均為openjdk7
okay,再實驗,問題完美解決。
希望我的血淚史對大家有所幫助~ 如有任何問題,歡迎交流