Lambda-Ausdrücke Java 8-Ausnahme: java.lang.NoSuchMethodError: java.lang.invoke.LambdaMetafactory.metaFactoryJava

Java-Forum
Guest
 Lambda-Ausdrücke Java 8-Ausnahme: java.lang.NoSuchMethodError: java.lang.invoke.LambdaMetafactory.metaFactory

Post by Guest »

Ich habe Probleme mit der Ausführung des folgenden Codes:

Code: Select all

    public class LambdaTesting {
public static void main(String[] args){
new LambdaTesting();
}
public LambdaTesting(){
test1();
}
private void test1(){
Runnable x = () -> System.out.println("ok"); //error
}
}
was die folgende Ausnahme verursacht:

Code: Select all

*Exception in thread "main" java.lang.IncompatibleClassChangeError
at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:383)
at LambdaTesting.test1(LambdaTesting.java:24)
at LambdaTesting.(LambdaTesting.java:20)
at LambdaTesting.main(LambdaTesting.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: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)
... 3 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)
... 6 more*
Ich habe jdk8 installiert, heruntergeladen von:
http://jdk8.java.net/lambda/ (Windows x64-Version)

Ich führe es in Eclipse Version: 4.4.0 aus, heruntergeladen von:
http://downloads.efxclipse.org/eclipse- ... 013-06-30/
(Datei: org.eclipse.sdk.ide-win32.win32.x86_64.zip 30-Jun-2013 17:35 180M)

eclipse.ini-Datei:

Code: Select all

-vm
C:\Program Files\Java\jre8\bin\java.exe
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20130521-0416
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Xms40m
-Xmx512m
Projekteigenschaften -> Java-Compiler -> Compiler-Konformitätsstufe: 1.8 (BETA)
(Standardkonformitätseinstellungen verwenden ist aktiviert).

Projekteigenschaften -> Java Build Path -> Bibliotheken:
JRE-Systembibliothek [jre8]

Projektlaufkonfigurationen: < /p>

[JRE tab] Projekt JRE (jre8) überprüft

[Classpath tab] Boostrap-Einträge: JRE-Systembibliothek [jre8]

Ich habe auch versucht, LambdaTesting.class über die Befehlszeile im Verzeichnis jre8/bin auszuführen
aber es trat dieselbe Ausnahme auf.

Java-Version:

Code: Select all

C:\Program Files\Java\jre8\bin>java.exe -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b102)
Mein Betriebssystem ist: Windows 7 x64

Irgendwelche Hinweise?
Dank @assylias habe ich das Problem der Kompilierung über die Befehlszeile mit jdk1.8.0/bin/javac.exe gelöst, aber immer noch kein Ergebnis in Eclipse . Scheint, dass Eclipse den falschen Compiler hat.
Ich habe versucht, die Einstellungen zu ändern unter: Einstellungen -> Java -> Compiler, aber ich kann unter „Kompatibilität generierter .class-Dateien“ nur Version 1.7 auswählen (in dieser Einstellung ist 1.8 nicht verfügbar).
„Standardkonformitätseinstellungen verwenden“ verursacht die oben genannte Ausnahme.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post