web-dev-qa-db-de.com

Der Typ Java.io.ObjectInputStream kann nicht aufgelöst werden. Es wird indirekt von erforderlichen .class-Dateien verwiesen

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.

36
user3891270

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:

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 .

33
mzjn

Sie müssen lediglich Ihre Tomcat-Version auf Tomcat 8.0.xx aktualisieren. Java8 <-> Tomcat8

Dies ist die Konfiguration, die ich verwendet habe und die immer gut funktioniert hat JDK versionTomcat versions

3
Ismael Sarmento

Problemumgehung:

Window -> Preferences -> Java -> Installed JREs, wählen Sie eine andere JRE aus

vielleicht ist diese JDK-Edition nicht geeignet:

enter image description here


Versuchen Sie es stattdessen mit diesem:

enter image description here

Problem gelöst!

1
Phoenix

Ein Upgrade auf Tomcat 7.0.70 hat das Problem für mich behoben

1
Gavy

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:

  • Fenster-> Einstellungen-> Java-> Installierte JREs
  • Deaktivieren Sie die ausgewählte JRE
  • Klicken Sie auf OK (dieser Schritt kann optional sein?)
  • Überprüfen Sie JRE erneut
1
metin.n

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.

1
Aniket Thakur

Okay, diese Frage war vor einem Jahr, aber ich habe vor kurzem auch dieses Problem bekommen.

Also, was ich getan habe:

  1. Aktualisieren Sie Tomcat 7 auf Tomcat 8.
  2. Aktualisieren Sie auf die neueste Version Java (Java 1.8.0_141).
  3. Aktualisieren Sie die JRE-Systembibliothek in Projekt> Eigenschaften> Java Build Path. Vergewissern Sie sich, dass sie die neueste Version hat, die in meinem Fall jre1.8.0_141 ist (bevor es war) die vorherige Version jre1.8.0_111)

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.

1
kaixas K

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.

1
Amit1011

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.

0
Touhid

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

0
mohsen.nour