Я использую net.orfjackal.retrolambda.retrolambda jar (версия 2.5.5) для конвертации jar из jdk 8 в совместимый с 1.6 jvm, который необходим одному модулю с помощью ant build.
Цель Ant
<target name="retroLambdaArchive" description="make class files compatible with 1.6 jvm needed by module">
<property name="retroFileName" value="test.jar"/>
<property name="retroFileName" value="MANIFEST.MF"/>
<property name="retroClasspath" value="" />
<delete dir="/home/tmp/retroMe/" />
<delete dir="/home/tmp/retroMe_in/" />
<delete dir="/home/tmp/retroMe_out/" />
<!-- get the retrolambda jar -->
<artifact:dependencies filesetId="retrolambda.fileset" useScope="runtime">
<dependency groupId="net.orfjackal.retrolambda"
artifactId="retrolambda"
version="2.5.5"
type="jar">
</dependency>
</artifact:dependencies>
<copy todir="/home/tmp/retroMe">
<fileset refid="retrolambda.fileset" />
<mapper type="flatten" />
</copy>
<unzip src="${retroFileName}" dest="/home/tmp/retroMe_in/" />
<java classname="net.orfjackal.retrolambda.Main" fork="true" failonerror="true" classpath="/home/tmp/retroMe/retrolambda-2.5.6.jar:${retroClasspath}">
<sysproperty key="retrolambda.inputDir" value="/home/tmp/retroMe_in/"/>
<sysproperty key="retrolambda.classpath" value="/home/tmp/retroMe_in/"/>
<sysproperty key="retrolambda.outputDir" value="/home/tmp/retroMe_out/"/>
<sysproperty key="retrolambda.bytecodeVersion" value="50"/>
</java>
<jar destfile="50test.jar" manifest="/home/test/META-INF/MANIFEST.MF">
<fileset dir="/home/tmp/retroMe_out/" />
</jar>
<delete dir="/home/tmp/retroMe/" />
<delete dir="/home/tmp/retroMe_in/" />
<delete dir="/home/tmp/retroMe_out/" />
</target>
Всякий раз, когда я использую лямбда-выражение в любом классе, сборка завершается с ошибкой ниже:
[java] 00:02 ERROR: Failed to run Retrolambda
[java] java.lang.RuntimeException: Failed to backport class: com/test/TestClass
[java] at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:129)
[java] at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:107)
[java] at net.orfjackal.retrolambda.Transformers.backportClass(Transformers.java:47)
[java] at net.orfjackal.retrolambda.Retrolambda.run(Retrolambda.java:94)
[java] at net.orfjackal.retrolambda.Main.main(Main.java:28)
[java] Caused by: java.lang.RuntimeException: Failed to backport lambda or method reference: com/test/TestClass.lambda$appendPluginList$0(Ljava/lang/StringBuilder;Ljava/lang/String;)V (6)