Ich habe Eclipse heruntergeladen und versucht, ein Beispiel-Servlet-Programm zu erstellen, habe aber folgenden Fehler erhalten
Der Typ Java.io.ObjectInputStream kann nicht aufgelöst werden. Es wird indirekt von erforderlichen .class-Dateien verwiesen
Ich habe den Erstellungspfad richtig konfiguriert. Ich verwende Java 8 und Apache Tomcat 7 und Bibliotheken für beide werden korrekt referenziert.
Problem ist speziell für Java EE nur. Normalerweise Java SE Projekte laufen gut.
In Java 8 Update 91) ist etwas passiert, das den vorhandenen JSP-Code beschädigt hat. Das scheint ziemlich klar zu sein. Hier ein Beispiel für ähnliche Fragen und Fehlerberichte:
Java.io.ObjectInputStream
in Update 91, das "es mit RHEL6s aktueller EuGH-Version inkompatibel gemacht hat")In all diesen Fällen geht es um Probleme mit Java 8 Update 91 (oder höher), die bei Verwendung früherer JRE/JDK-Versionen nicht vorhanden sind.
Das folgende OpenJDK-Änderungsset vom 22. Januar 2016 scheint im Zusammenhang zu stehen: http://hg.openjdk.Java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb (Festschreiben der Nachricht "8144430: JMX-Verbindungen verbessern "). Das Änderungsset scheint mit dieser Sicherheitsanfälligkeit zu tun zu haben, https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427 , die in einem Kommentar zu erwähnt wird dieser Red Hat-Fehlerbericht https://bugzilla.redhat.com/show_bug.cgi?id=1336481 .
In den Versionshinweisen zu Update 91 wird JDK-8144430 (nicht öffentliches Ticket) erwähnt: http://www.Oracle.com/technetwork/Java/javase/8u91-relnotes-2949462.html .
In "Oracle Critical Patch Update Advisory - April 2016" wird die CVE-2016-3427-Sicherheitsanfälligkeit erwähnt: http://www.Oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html .
Problemumgehung:
Window -> Preferences -> Java -> Installed JREs, wählen Sie eine andere JRE aus
vielleicht ist diese JDK-Edition nicht geeignet:
Versuchen Sie es stattdessen mit diesem:
Problem gelöst!
Ein Upgrade auf Tomcat 7.0.70 hat das Problem für mich behoben
Mit dem neuesten 7.x Tomcat (aktuell 7.0.69) wurde das Problem für mich gelöst.
Wir haben auch eine Problemumgehung in einem alten Eclipse-Fehler versucht. Vielleicht hat das auch dazu beigetragen, das Problem zu lösen?
https://bugs.Eclipse.org/bugs/show_bug.cgi?id=67414
Problemumgehung:
Ich benutze Google Appengine Java sdk und hatte ein ähnliches Problem. Ich musste hinzufügen
<runtime>Java8</runtime>
in der Datei appengine-web.xml, damit es funktioniert.
Okay, diese Frage war vor einem Jahr, aber ich habe vor kurzem auch dieses Problem bekommen.
Also, was ich getan habe:
Bei den ersten beiden Schritten wird der Fehler immer noch nicht behoben, sodass der letzte Schritt wichtig ist. Der Build-Pfad für jre wurde nicht automatisch geändert.
gleiches Problem bei mir. Dies ist keine Lösung, sondern eine Problemumgehung, die für mich funktioniert hat: Buildpath-> Configure buildpath-> Libraries-> Entfernen Sie hier die JRE-Systembibliothek, die auf JRE8 verweist, und fügen Sie die JRE-Systembibliothek für JRE7 hinzu.
Ich war auch mit dem gleichen Problem konfrontiert. Ich hatte Jdk1.7.0.79. Dann habe ich es mit Jdk8.0.120 aktualisiert. Dann ist das Problem gelöst. Nach erfolgreichem Abschluss des aktualisierten jdk. Gehen Sie zu Projekt-> Reinigen. Das Projekt wird neu erstellt und alle roten Warnmeldungen werden beseitigt.
Grund: Alte Versionen des Tomcat 6-JSP-Compilers scheinen die Verbesserungen des JDK 8-Konstantpools nicht zu kennen - z. Methodenhandles. In neuem Code in JDK 8u wird ein Methodenhandle verwendet, anstatt eine anonyme Klasse zu erstellen. Dies führt dazu, dass das Methodenhandle im Konstantenpool aufgelistet wird und der Eclipse-Compiler daran erstickt - https://bz.Apache.org/bugzilla/show_bug.cgi?id=56613