Java6和Java8在Windows上共存,(任意JDK共存,博主實現了789切換)
0x00 需求
最近在做一個Android的專案,一開始安裝的是Java8用於專案的開發。但是在專案後期需要用到drozer用於檢測專案的安全性,要搭建drozer的測試環境必須要使用Java6,否則會出現問題引用一下官方的說明
It is very important that Java 1.6 is installed and used. This is because Android bytecode is only compliant to
version 1.6 and not higher versions. Making use of any version of javac other than 1.6 will result in errors during
compilation that look similar to the following:trouble processing:
bad class file magic (cafebabe) or version (0033.0000)
...while parsing ClassLoadTest.class
...while processing ClassLoadTest.class
1 warning
no classfiles specified
Error whilst building APK bundle.
0x01 解決方法
1. 第一步:下載兩個不同版本的Java,然後分別的安裝。(我安裝的時候使用的是預設的安裝路徑,當然你也可以自定義安裝路徑)
2. 第二步:下面就是要對環境變數進行配置了,我的電腦-->右鍵-->屬性,選擇高階系統設定-->環境變數。
3. 選擇使用者的環境變數中的path,刪除其中的‘C:\ProgramData\Oracle\Java\javapath;’環境變數,如果不刪除則會出現問題,在輸入 java -version 時顯示的會一直是先安裝的那個版本的Java。
4. 配置Java6和Java8的環境變數
在系統變數中新建兩個系統變數分別是JAVA6_HOME和JAVA8_HOME,在新建時選擇它們各自對應的安裝路徑。
5. 設定CLASSPATH環境變數
同4新建一個系統變數變數名稱為CLASSPATH,變數值為:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
注意要將前面的“.”也要複製進去。
6. 完成系統的Java的設定
在系統變數中新建一個變數名為JAVA_HOME的環境變數,變數的值為JAVA6_HOME或者JAVA8_HOME。然後選擇系統變數中的path,在變數值後新增如下程式碼
Windows7中的配置: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin Windows10中的配置: %JAVA_HOME%\bin %JAVA_HOME%\jre\bin
7. 刪除C:\Windows\System32下的java.exe、javaw.exe、javaws.exe三個檔案。
0x02 測試
當JAVA_HOME的變數值為JAVA6_HOME時:
當JAVA_HOME的變數值為JAVA8_HOME時:
0x03 注意事項
- 一定要刪除在使用者變數中的‘C:\ProgramData\Oracle\Java\javapath;’
- 一定要刪除system32中的三個帶有Java的exe檔案
- 在修改JAVA_HOME的變數值後要一路確定到底,然後退出當前的cmd命令視窗環境變數才會生效