在 Termux 上使用 ecj 编译会产生以下错误消息:
Lambda 表达式仅允许在源级别 1.8 或更高版本中使用。
运行该工具时未指定任何选项。
使用 switch - 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 Lambda 和反向移植之类的解决方案可以使 Java 8 源代码在 7 或更早版本上工作。不过,我还没有尝试过。一个人能查到的就这么多。(有关说明,请参阅下面的评论)。
一种解决方法可能是在 Termux 上安装 Arch Linux。. 不过,命令提示符可能有点错误。
然后,您可以使用包管理器 pacman 安装 Open JDK 8 和 eclipseecj。
那行得通;ecj 现在编译 1.8 代码。
我希望避免安装完整的 JDK,因为它会引入冗余并占用额外的空间。