[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jdt-core-dev] Lambda-Compilation fails on b105
|
The title is wrong its not that the compilation fails but the generated
bytecode does not work at runtime ;-)
Tom
On 05.09.13 22:22, Tom Schindl wrote:
> Hi,
>
> After having managed to build BETA8 using CBI I see that Lambdas are
> compiled in a way that they don't work with the latest java8 builds.
>
> Running this app:
>
>> import java.util.Arrays;
>> import java.util.List;
>>
>> public class LamdaTest {
>> public static void main(String[] args) {
>> List<String> collection = Arrays.asList("A","B","C");
>> collection.forEach((s) -> System.out.println(s));
>> }
>> }
>
>
> fails with
>
>> Exception in thread "main" java.lang.IncompatibleClassChangeError
>> at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:383)
>> at LamdaTest.main(LamdaTest.java:8)
>> Caused by: java.lang.NoSuchMethodException: no such method: java.lang.invoke.LambdaMetafactory.metaFactory(Lookup,String,MethodType,MethodHandle,MethodHandle,MethodType)CallSite/invokeStatic
>> at java.lang.invoke.MemberName.makeAccessException(MemberName.java:765)
>> at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:882)
>> at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1019)
>> at java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1284)
>> at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:381)
>> ... 1 more
>> Caused by: java.lang.NoSuchMethodError: java.lang.invoke.LambdaMetafactory.metaFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
>> at java.lang.invoke.MethodHandleNatives.resolve(Native Method)
>> at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:854)
>> at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:879)
>> ... 4 more
>
> It looks like the signature of LambdaMetafactory.metaFactory changed to
>
> Lookup,String,MethodType,MethodType,MethodHandle,MethodType
>
> and you generate
>
> Lookup,String,MethodType,MethodHandle,MethodHandle,MethodType
>
> Tom
> _______________________________________________
> jdt-core-dev mailing list
> jdt-core-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/jdt-core-dev
>