問題描述:
今天突然想寫一個socket通信的小應用,分別采用BIO、NIO、AIO的方式來實現,來復習前面看的關於TCP/UDP通信的知識。於是乎在原來安裝了jdk1.6的機子上重新安裝了jdk1.8。結果就出現了一個很蛋疼的問題:我原來的JAVA_HOME配置根本就沒有改變,但是在命令行執行 java -version出現的卻是1.8版本,而javac -version出現的是正常的1.6版本。
原因分析:
參考 http://www.oschina.net/question/942785_103000?fromerr=U6XKsOdO , 主要原因是javac -version是由JAVA_HOME指定的路徑中的java版本來決定的。而java -version中找的java.exe是根據系統環境變量PATH來定的,而此前我系統中的PATH變量配置為:JAVA_HOME相關的配置在最后,也就是在system32的后面。這樣因為每次安裝jre的時候,都會講java.exe拷貝到system32路徑中,而java -version會依次變量PATH配置,如果找到了就不在繼續往后找,這就導致java -version永遠是最新版本的java。
解決辦法:
其實只要將系統環境變量PATH中的JAVA_HOME相關的配置移到最前即可。 其他的可以刪除system32中的java.exe javaw.exe javaws.exe,刪除注冊表等。