在Termux上使用ecj进行编译会产生以下错误消息:
Lambda表达式只允许在源代码级别1.8或以上。
在运行该工具时没有指定任何选项。
使用开关- 1.8进行编译会产生以下输出:
ecj -1.8 Composite2重复合规设定规范:-1.8
Composite2是我的源代码所在的目录。
接下来,我尝试了以下几种方法:
ecj -source 1.8 -target 1.8 Composite2遵从级别'1.7‘与源级别'1.8’不兼容。合规级别“1.8”或更高是必需的。
源是可用的这里
有没有我缺少的设置或开关?我不熟悉使用ecj作为编译器。
你能帮上忙吗?
似乎有一些解决方案,如Retro和backporting,可以使Java 8源代码在7或更高版本上工作。不过,我还没试过。只有一个人可以退房。(澄清情况见下文评论)。
解决办法可能是安装Termux上的Arch Linux。。不过,命令提示符可能有点错误。
然后可以使用安装Open 8和eclipseecj。
这是可行的;ecj现在已经编译了1.8代码。
我希望避免安装完整的JDK,因为它引入了冗余并占用了额外的空间。
发布于 2019-12-19 21:45:42
在Android7上的Termux不支持任何超过7的java版本。Termux上的against最多支持Java 13。最好的选择是在上安装OpenJDK,并对ecj使用javac。在Arch上,ecj还存在其他问题,比如只支持Java 8。
发布于 2019-12-19 17:57:09
这似乎是ecj中的一个bug,这里报告了bug.cgi?id=535969,在这里修补了bug.cgi?id=477894。
使用Eclipse4.9 m2构建id: I20180731-0800进行验证
https://stackoverflow.com/questions/55982879
复制相似问题