web-dev-qa-db-fra.com

Le type Java.io.ObjectInputStream ne peut pas être résolu. Il est indirectement référencé à partir des fichiers .class requis.

J'ai téléchargé Eclipse et essayé de créer un exemple de programme de servlet, mais j'ai l'erreur suivante.

Le type Java.io.ObjectInputStream ne peut pas être résolu. Il est indirectement référencé à partir des fichiers .class requis.

J'ai configuré le chemin de génération correctement. J'utilise Java 8 et Apache Tomcat 7; les bibliothèques des deux sont correctement référencées.

Le problème concerne spécifiquement Java EE. Ordinairement, les projets Java SE fonctionnent correctement.

36
user3891270

Quelque chose s'est passé dans Java 8 Update 91 qui a cassé le code JSP existant. Cela semble assez clair. Voici un exemple de questions similaires et de rapports de bugs:

Il s’agit de problèmes avec Java 8 Update 91 (ou version ultérieure) qui ne sont pas présents lors de l’utilisation de versions antérieures JRE/JDK.


Le jeu de modifications OpenJDK suivant, à partir du 22 janvier 2016, semble être lié: http://hg.openjdk.Java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb (message de validation "8144430: Améliorer les connexions JMX "). La modification semble être liée à cette vulnérabilité, https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427 , qui est mentionné dans un commentaire de ce rapport de bogue Red Hat, https://bugzilla.redhat.com/show_bug.cgi?id=1336481 .

Le document Notes de mise à jour de la mise à jour 91 mentionne JDK-8144430 (ticket non public): http://www.Oracle.com/technetwork/Java/javase/8u91-relnotes-2949462.html .

Dans "Avis de mise à jour de correctif Oracle - avril 2016", la vulnérabilité CVE-2016-3427 est mentionnée: http://www.Oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html .

33
mzjn

Vous devez simplement mettre à niveau votre version de Tomcat, vers Tomcat 8.0.xx. Java8 <-> Tomcat8

C’est la configuration que j’utilise et elle a toujours bien fonctionné JDK versionTomcat versions

3
Ismael Sarmento

Solution de contournement:

Fenêtre -> Préférences -> Java -> JRE installés, sélectionnez un autre JRE.

peut-être que cette édition du JDK n'est pas appropriée:

enter image description here


Alors essayez celui-ci à la place:

enter image description here

Problème résolu!

1
Phoenix

La mise à niveau vers Tomcat 7.0.70 a résolu le problème pour moi.

1
Gavy

L'utilisation du dernier 7.x Tomcat (actuellement 7.0.69) a résolu le problème pour moi.

Nous avons également essayé une solution de contournement dans un ancien bogue Eclipse. Peut-être que cela a en partie contribué à résoudre le problème?

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=67414

Solution de contournement:

  • Fenêtre-> Préférences-> Java-> JRE installés
  • Décocher JRE sélectionné
  • Cliquez sur OK (cette étape peut être facultative?)
  • Vérifiez à nouveau JRE
1
metin.n

J'utilise Google Appengine Java sdk et je rencontrais un problème similaire. Je devais ajouter

<runtime>Java8</runtime>

dans le fichier appengine-web.xml pour le faire fonctionner.

1
Aniket Thakur

D'accord, cette question était il y a un an, mais j'ai récemment eu ce problème aussi.

Alors qu'est-ce que j'ai fait:

  1. Mettez à jour Tomcat 7 vers Tomcat 8.
  2. Mise à jour vers la dernière Java (Java 1.8.0_141).
  3. Mettez à jour la bibliothèque système JRE dans Projet> Propriétés> Java Chemin de génération. Assurez-vous que la version la plus récente est jre1.8.0_141 (avant la version précédente jre1.8.0_111).

Quand j'ai fait les deux premières étapes, cela ne supprime toujours pas l'erreur, donc la dernière étape est importante. Cela n'a pas automatiquement changé le chemin de compilation pour jre.

1
kaixas K

même problème avec moi. Ce n'est pas une solution, mais une solution de contournement qui a fonctionné pour moi: Buildpath-> Configure buildpath-> Libraries-> Ici, supprimez la bibliothèque système JRE pointant vers JRE8 et ajoutez une bibliothèque système JRE pour JRE7.

1
Amit1011

Je faisais également face au même problème. J'ai eu Jdk1.7.0.79. Puis je l'ai mis à jour avec Jdk8.0.120. Ensuite, le problème résolu. Après avoir terminé avec succès jdk mis à jour. Aller au projet-> nettoyer. Cela reconstruira le projet et toutes les alertes rouges seront éliminées.

0
Touhid

Raison: les anciennes versions du compilateur JSP Tomcat 6 ne semblent pas être au courant des améliorations apportées au pool constant JDK 8 - par exemple. poignées de méthode. Le nouveau code dans JDK 8u utilise un handle de méthode au lieu de créer une classe anonyme. Cela entraînera la liste du descripteur de méthode dans le pool de constantes et le compilateur Eclipse s'étouffera avec ceci - https://bz.Apache.org/bugzilla/show_bug.cgi?id=5661

0
mohsen.nour