在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”或更高。
来源可用here
我是否缺少任何设置或开关?我不熟悉将ecj用作编译器。
你能帮忙吗?
似乎有诸如Retro Lambda和向后移植之类的解决方案,以使Java 8源可以在7或更早版本上运行。我还没有尝试过。一个人只能结帐。 (有关说明,请参见下面的评论)。
一种解决方法是安装Arch Linux on Termux.。但是,命令提示符可能会出现一些问题。
然后可以使用软件包管理器pacman安装Open JDK 8和eclipseecj。
那行得通; ecj现在可以编译1.8代码。
我希望避免安装完整的JDK,因为它引入了冗余并占用了额外的空间。
答案 0 :(得分:1)
Android 7上的Termux不支持7以上的任何Java版本。Termux上的ARCH Linux支持最多Java13。最好的选择是在Termux的Arch Linux上安装OpenJDK,并使用javac代替ecj。 Arch Linux上的ecj还有其他问题,例如仅支持Java 8。
答案 1 :(得分:0)
这似乎是ecj
中的一个错误,在这里https://bugs.eclipse.org/bugs/show_bug.cgi?id=535969被报告,并在此处https://bugs.eclipse.org/bugs/show_bug.cgi?id=477894进行了修补。
通过Eclipse 4.9平方米Build ID进行验证:I20180731-0800