gpt4 book ai didi

java - Java 8 中的 IncompatibleClassChangeError(Lambda 表达式)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:41 25 4
gpt4 key购买 nike

我正在尝试学习 lambda 表达式,所以关注 http://www.oracle.com/technetwork/articles/java/lambda-1984522.html .按照IDE和JDK下载

JDK 8 Eclipse IDE with JDK 8 support

但是当编译下面的代码后,我有一个异常

Exception in thread "main" java.lang.IncompatibleClassChangeError
at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:444)
at com.ahmetk.java8.Hello.main(Hello.java:10)
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:800)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:917)
at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1101)
at java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1363)
at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:442)
... 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:889)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:914)

我尝试执行的简单代码。

public class Hello {
interface HelloService {
String hello(String firstname, String lastname);
}

public static void main(String[] args) {

HelloService helloService = (String firstname, String lastname) -> {
String hello = "Hello " + firstname + " " + lastname;
return hello;
};
System.out.println(helloService.hello(args[0], args[1]));

}
}

enter image description here

最佳答案

eclipse 在支持 java8 方面有问题。我已成功编译并在命令提示符下运行

D:\tools\java\jdk1.8.0_32Bit\bin\javac com/ahmetk/java8/Hello.java

D:\tools\java\jdk1.8.0_32Bit\bin\java -cp . com.ahmetk.java8.Hello 12 12Hello 12 12

关于java - Java 8 中的 IncompatibleClassChangeError(Lambda 表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com