在學習Java中的Lambda表達式之後,我試着練習一些簡單的例子。但在我的第一個例子中,只有我收到以下錯誤。Java中的IncompatibleClassChangeError
Exception in thread "main" java.lang.IncompatibleClassChangeError
at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:384)
at com.example.lambda.HelloLambda.main(HelloLambda.java:15)
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:763)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:880)
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:382)
... 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:852)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:877)
... 4 more
由於向後兼容性問題,該錯誤似乎是一個錯誤。但不知道如何解決這個問題。在StackOverFlow中的許多答案建議重新編譯可以解決這個問題。但我仍然得到這個錯誤。
我的代碼
package com.example.lambda;
public class HelloLambda {
static String firstname = "ChanSek";
static String lastname = "Nayak";
interface HelloService {
String hello();
}
public static void main(String[] args) {
HelloService helloService =
() -> {String hello="Hello " + firstname + " " + lastname;
return hello;};
System.out.println(helloService.hello());
}
}
代碼編譯的罰款。但運行給出了上述錯誤。
我正在使用JDK1.8.0快照。
您需要下載[帶有Lambda支持的JDK 8](http://jdk8.java.net/lambda/)。檢查一下,看看是否只下載了JDK。 –
@RohitJain當然,我已經下載了JDK1.8.0。否則它根本不會編譯。 –
這對我來說運行良好。您是否使用JDK附帶的JVM?你還在用什麼版本號?早期版本是buggy – Reimeus