1. 程式人生 > >使用Openjdk7編譯android原始碼出現"Could not initialize NSS"錯誤的解決辦法

使用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,再實驗,問題完美解決。

希望我的血淚史對大家有所幫助~ 如有任何問題,歡迎交流