使用JDK1.7 eclipse报错 Android requires compiler compliance level 5.0 or 6.0.

移动开发 码拜 9年前 (2015-04-23) 1381次浏览 0个评论

先说明下,设置编译等级无法解决此问题。
原项目是在intellij idea中写的。并且运行正常。但是 idea对UI设计支持的不是很好。所以我导入到了eclipse中。

我代码中使用了部分1.7特性。例如 switch 使用字符串等等。
如果更改为1.6 
此错误消失:

Android requires compiler compliance level 5.0 or 6.0. Found ""1.7"" instead. Please use Android Tools > Fix Project Properties.

但是代码中需要大量修改使用了1.7特性的部分。并且switch只能修改为if语句了。

有什么方法能解决此问题?
eclipse版本:

Eclipse IDE for Java Developers

Version: Juno Service Release 2
Build id: 20130225-0426

ADT版本:

Android DDMS	                21.1.0.v201302060044-569685
Android Development Tools	21.1.0.v201302060044-569685
............
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
10分
ADT是基于JAVA 1.6 的
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 1 楼 CuGBabyBeaR 的回复:

ADT是基于JAVA 1.6 的

看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 2 楼 archy123 的回复:

引用 1 楼 CuGBabyBeaR 的回复:ADT是基于JAVA 1.6 的
看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?

他的意思是你可以装1.7的JDK(因为JAVA1.7里有1.6的编译器) 
但是Android本身是不支持JAVA 1.7的… 所以你还是得选成1.6的编译器

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
5分
加个编译说明能不能解决?
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 3 楼 CuGBabyBeaR 的回复:

引用 2 楼 archy123 的回复:引用 1 楼 CuGBabyBeaR 的回复:ADT是基于JAVA 1.6 的
看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?他的意思是你可以装1.7的JDK(因为JAVA1.7里有1.6的编译器) 
但是Android本身是不支持JAVA 1.7的… 所以你还是得选成……

可是事实貌似不是这样的。
理由1.如果Android本身不支持jdk1.7,那么无论使用什么IDE应该都是同样效果。
理由2.我对apk文件,和class文件均进行了反编译。
代码如下:
class文件反编译结果

  switch (ContentListActivity.this.myApplication.getTabs())
          {
          case "receive":
..........

apk文件反编译后的smali文件

    .line 95
    :sswitch_0
    const-string v3, "receive"

这应该是支持吧….

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
对了,switch方法,最后好像是使用的equals方法

   invoke-virtual {v4, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

不知道1.7中switch对字符串的处理是不是使用的equals方法。没有去查看jdk的源码。

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
5分
Please use Android Tools > Fix Project Properties.
你按照提示操作一下看看
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 7 楼 zyxel60b 的回复:

Please use Android Tools > Fix Project Properties.
你按照提示操作一下看看

多谢回复,但是前面已经说了。更改编译等级无法解决问题。

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 5 楼 archy123 的回复:

引用 3 楼 CuGBabyBeaR 的回复:引用 2 楼 archy123 的回复:引用 1 楼 CuGBabyBeaR 的回复:ADT是基于JAVA 1.6 的
看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?他的意思是你可以装1.7的JDK(因为JAVA1.7里有1.6的编译器) 
但是Android本身是不……

是吗…我自己倒是没试过
之前也遇到过这个问题 我是看stackoverflow上是这么说的
http://stackoverflow.com/questions/7637144/android-requires-compiler-compliance-level-5-0-or-6-0-found-1-7-instead-plea

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 5 楼 archy123 的回复:

引用 3 楼 CuGBabyBeaR 的回复:引用 2 楼 archy123 的回复:引用 1 楼 CuGBabyBeaR 的回复:ADT是基于JAVA 1.6 的
看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?他的意思是你可以装1.7的JDK(因为JAVA1.7里有1.6的编译器) 
但是Android本身是不……

话说
http://developer.android.com/sdk/index.html
SYSTEM REQUIREMENTS中写的是JDK 6

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 10 楼 CuGBabyBeaR 的回复:

引用 5 楼 archy123 的回复:引用 3 楼 CuGBabyBeaR 的回复:引用 2 楼 archy123 的回复:引用 1 楼 CuGBabyBeaR 的回复:ADT是基于JAVA 1.6 的
看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?他的意思是你可以装1.7的JDK(因为JAVA1.7里有1.6的……

可以使用jdk1.7,但是编译等级必须是1.6,也就是说。代码必须兼容1.6才行。我现在纳闷的是,idea下是怎么编译通过的。难道idea 会自动修正编码。不明白了。。

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
有谁知道idea是怎么处理的
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 11 楼 archy123 的回复:

引用 10 楼 CuGBabyBeaR 的回复:引用 5 楼 archy123 的回复:引用 3 楼 CuGBabyBeaR 的回复:引用 2 楼 archy123 的回复:引用 1 楼 CuGBabyBeaR 的回复:ADT是基于JAVA 1.6 的
看了下文档说必须1.6或更高。。难道说更高只是指JDK可以使用高版本,但是语言特性却不能使用高版本的?他的意思是你可以……

我也不了解..
业余程序员表示没在其他平台玩过….

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
结贴,来者都有份!
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
话说  怎么解决的啊  
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 15 楼 DOXL0 的回复:

话说  怎么解决的啊  

修改代码解决的

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
引用 15 楼 DOXL0 的回复:

话说  怎么解决的啊  

幸亏idea比较智能,重构代码比较快,先在idea中修改编译等级,然后使用IDE自动修正代码就好了。也没花太多时间

使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
难道只有修改自己的代码来解决问题吗,这样的话1.7中好多新的功能都没法使用了
使用JDK1.7 eclipse报错  Android requires compiler compliance level 5.0 or 6.0.
我也遇到了这个问题,搜帖子发现没有解决办法  后来换了开发环境解决了该问题, 现在将解决的环境配置贴出来 希望以后有人可以有一点帮助吧。。。

ADT 23.0.4
android  SDK 5.0
jdk1.8.0_11


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用JDK1.7 eclipse报错 Android requires compiler compliance level 5.0 or 6.0.
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!