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命令窗口环境变量才会生效