Ich erhalte diesen Fehler, wenn ich eine OpenSource-Bibliothek einbinde, die ich aus dem Quellcode kompilieren musste. Alle Vorschläge im Web weisen darauf hin, dass der Code in einer Version kompiliert und in einer anderen Version ausgeführt wurde (neu auf alt). Ich habe jedoch nur eine Version von JRE auf meinem System. Wenn ich die Befehle ausführe:
$ javac -version
javac 1.5.0_18
$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
und checke in Eclipse nach den Eigenschaften der Java-Bibliothek, die ich bekomme 1.5.0_18
Daher muss ich zu dem Schluss kommen, dass etwas anderes, das innerhalb einer Klasse selbst liegt, die Ausnahme auslöst? Ist das überhaupt möglich?
Antworten:
Ich habe gelernt, dass solche Fehlermeldungen normalerweise richtig sind. Wenn es (Ihrer Meinung nach) nicht möglich sein könnte, was der gemeldete Fehler sagt, suchen Sie in einem anderen Bereich nach einem Problem ... um Stunden später herauszufinden, dass die ursprüngliche Fehlermeldung tatsächlich richtig war.
Da Sie Eclipse verwenden, hat Thilo meiner Meinung nach Recht. Der wahrscheinlichste Grund, warum Sie diese Meldung erhalten, ist, dass eines Ihrer Projekte 1.6 Klassen kompiliert. Es spielt keine Rolle, ob Sie nur eine 1,5-JRE auf dem System haben, da Eclipse einen eigenen Compiler (nicht Javac) hat und nur eine 1,5-JRE benötigt, um 1,6-Klassen zu kompilieren. Es mag seltsam sein und eine Einstellung muss deaktiviert werden, um dies zu ermöglichen, aber ich habe es gerade geschafft.
Überprüfen Sie für das betreffende Projekt den Abschnitt Projekteigenschaften (normalerweise Alt + Eingabetaste), Java Compiler. Hier ist ein Bild eines Projekts, das für die Kompilierung von 1.6 konfiguriert ist, jedoch nur eine JRE von 1,5 aufweist.
quelle
Haben Sie versucht, eine vollständige "Bereinigung" durchzuführen und diese dann in Eclipse neu zu erstellen (Projekt-> Bereinigen ...)?
Können Sie mit "javac" und "java" direkt über die Befehlszeile kompilieren und ausführen? Funktioniert das richtig
Wenn Sie mit der rechten Maustaste auf Ihr Projekt klicken, gehen Sie zu "Eigenschaften" und dann zu "Java Build Path". Gibt es verdächtige Einträge unter einer der Registerkarten? Dies ist im Wesentlichen Ihr KLASSENPFAD.
In den Eclipse-Einstellungen möchten Sie möglicherweise auch den Abschnitt "Installierte JREs" im Abschnitt "Java" überprüfen und sicherstellen, dass er Ihren Vorstellungen entspricht.
Sie haben definitiv entweder eine veraltete .class-Datei, die irgendwo herumliegt, oder Sie erhalten eine Nichtübereinstimmung zwischen Kompilierungs- und Laufzeit in den von Ihnen verwendeten Java-Versionen.
quelle
Haben Sie mit Eclipse kompiliert? Es wird ein anderer Compiler verwendet (nicht Javac). Das sollte nicht zu diesem Fehler führen (wenn alles richtig konfiguriert ist), aber Sie können versuchen, ihn stattdessen mit javac zu kompilieren.
Wenn das Problem dadurch behoben wurde, versuchen Sie festzustellen, ob Eclipse falsche Compilereinstellungen aufweist. Lassen Sie es speziell auf Java 5 abzielen.
quelle
Ich habe auch den gleichen Fehler bekommen. Grund dafür war, dass ich das Projekt mit Maven kompilierte. Ich hatte JAVA_HOME, das auf JDK7 zeigte, und daher wurde Java 1.7 zum Kompilieren verwendet, und als ich das Projekt ausführte, verwendete ich JDK1.5. Das Ändern des folgenden Eintrags in der .classpath-Datei oder das Ändern der Eclipse wie im Screenshot hat das Problem behoben.
oder ändern Sie die Ausführungskonfigurationen von Eclipse als
quelle
Überprüfen Sie auch alle JAR-Dateien in Ihrem Projekt, die für eine höhere Version von Java kompiliert wurden. Wenn dies Ihre eigenen Bibliotheken sind, können Sie dies beheben, indem Sie das Zielversionsattribut in javac ändern
quelle
Ein weiteres Szenario, in dem dies passieren kann, ist das Starten einer Eclipse-Instanz (zum Debuggen usw.) von einer Host-Eclipse aus. In diesem Fall hilft es nicht, nur die Projektebene oder die JRE-Bibliothek im Klassenpfad des Projekts zu ändern. Was zählt, ist die JRE, die zum Starten der Ziel-Eclipse-Umgebung verwendet wird.
quelle
Überprüfen Sie immer auch das Offensichtliche. Ich habe diesen Fehler einmal erhalten, als ich versehentlich die falsche Ressource für die Aktion zum Hinzufügen und Entfernen des Servers abgerufen habe. Es kann leicht zu übersehen sein.
quelle
Das Löschen der projektspezifischen Einstellungsdateien (Eclipse-Arbeitsbereich / Projektordner / .settings /) aus dem Projektordner reicht ebenfalls aus. Natürlich müssen wir ein Projekt nach dem Löschen bereinigen und erstellen.
quelle
Ändern des Projekts zur Verwendung von Java 1.7: Damit dies funktioniert, gehen Sie folgendermaßen vor:
Funktioniert nicht?
Funktioniert immer noch nicht?
im Verzeichnis Ihres Projekts: Bearbeiten Sie .settings / org.eclipse.jdt.core.prefs> Stellen Sie sicher, dass Ihre Zielebene angewendet wird
Viel Glück!
quelle
Ich habe dieses Problem gelöst, indem ich den für den Server erforderlichen Wert geändert habe (in meinem Fall Tomcat). Doppelklicken Sie auf der Registerkarte Server in Eclipse auf den Server (um die Seite für die Serverkonfiguration zu öffnen), klicken Sie auf Laufzeitumgebung und ändern Sie die erforderliche JRE
quelle