Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jdt-core-dev] Lambda-Compilation fails on b105

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


Back to the top