Тип java.io.ObjectInputStream не может быть разрешен. На него косвенно ссылаются из требуемых файлов .class

Я загрузил Eclipse и попытался создать образец программы сервлета, но получил следующую ошибку

Тип java.io.ObjectInputStream не может быть разрешен. На него косвенно ссылаются из требуемых файлов .class

Я правильно настроил путь сборки. Я использую Java 8 и Apache Tomcat 7, и библиотеки для обоих указаны правильно.

Проблема только для Java EE. Обычно проекты Java SE работают нормально.


person user3891270    schedule 01.05.2016    source источник
comment
О какой конкретной версии Java 8 идет речь?   -  person mzjn    schedule 02.05.2016
comment
Я получаю то же исключение как для jdk, так и для jre версии 8 (обновление 91).   -  person ibrahim gürses    schedule 02.05.2016
comment
С этим связана проблема Red Hat: access.redhat.com/solutions/2294701   -  person ibrahim gürses    schedule 03.05.2016
comment
@ İbrahimGürses Я не могу получить к нему доступ из-за ограничений входа. Было бы хорошо, если бы вы могли опубликовать заключение или решение, если оно есть.   -  person flob    schedule 03.05.2016
comment
@flob: Предлагаемое решение: Рассмотрите возможность предварительной компиляции JSP как обходного пути. Также есть ссылка на повторно открытый отчет об ошибке (1223609), где указано, что ecj - это более старая версия, не поддерживающая java 8. Я не знаю, что с этим делать. Не было проблем с Java 8 Update 77 AFAIK.   -  person mzjn    schedule 09.05.2016
comment
Следующая ошибка была устранена 2 мая как не проблема с этим комментарием: Закрытие как не проблема. Это должно быть решено путем обновления Tomcat до последних версий. bugs.openjdk.java.net/browse/JDK-8155588. Заказчик сообщил, что единственное решение - вернуться к более старой версии JDK / JRE и молиться, чтобы сбой исчез с новым выпуском.   -  person mzjn    schedule 09.05.2016
comment
В комментарии к этой проблеме Red Hat bugzilla.redhat.com/show_bug.cgi?id = 1336481, упоминается следующая уязвимость: cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427. Он также есть в рекомендациях по обновлению критических исправлений Oracle - апрель 2016 г .: oracle.com / technetwork / security-consultory /.   -  person mzjn    schedule 20.05.2016
comment
У меня такая же проблема с JDK 1.8.0_191. Затем я изменил его на 1.8.0_162, и теперь он работает   -  person Devendra Singraul    schedule 06.12.2018


Ответы (10)


Что-то произошло в Java 8 Update 91, что нарушило существующий код JSP. Это кажется довольно ясным. Вот примеры похожих вопросов и отчетов об ошибках:

Все это касается проблем с Java 8 Update 91 (или новее), которых нет при использовании более ранних версий JRE / JDK.


Следующий набор изменений OpenJDK от 22 января 2016 г. кажется связанным: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb (сообщение фиксации «8144430: Улучшение соединений JMX»). Кажется, что набор изменений связан с этой уязвимостью, https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427, упомянутый в комментарии к отчету об ошибке Red Hat, https://bugzilla.redhat.com/show_bug.cgi?id=1336481.

В документе с примечаниями к выпуску обновления 91 упоминается JDK-8144430 (закрытый билет): http://www.oracle.com/technetwork/java/javase/8u91-relnotes-2949462.html.

В "Oracle Critical Patch Update Advisory - апрель 2016" уязвимость CVE-2016-3427 упоминается: http://www.oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html.

person Community    schedule 18.07.2016
comment
столкнулся с той же проблемой, но как только я перейду на tomcat 7, все работает нормально ... используя jdk8_121 - person dom; 16.03.2017
comment
@dom, в вопросе говорится, что я использую Java 8 и Apache Tomcat 7. Итак, что вы имеете в виду, когда я перейду на Tomcat 7? - person mzjn; 19.03.2017

Вам просто нужно обновить версию Tomcat до Tomcat 8.0.xx. Java8 ‹-> Tomcat8

Это конфигурация, которую я использовал, и она всегда хорошо работала  Версия JDK  Версии Tomcat

person Ismael Sarmento    schedule 22.07.2016
comment
Мне это кажется ошибкой в ​​Java 8 Update 91. Я сомневаюсь, что обновление Tomcat решит проблему для всех. См. stackoverflow.com/questions/36981733/. - person mzjn; 22.07.2016
comment
@ user3891270: Помогает ли этот ответ? Будет ли работать, если вы обновитесь до Tomcat 8? - person mzjn; 23.07.2016
comment
Среда выполнения- ›Добавить-› Apache- ›до версии 7 я смог найти, но 8-я версия apache не отображается. Как добавить ее извне. Пожалуйста, помогите мне, братан - person Ganesh Chowdhary Sadanala; 09.01.2019
comment
@GaneshChowdharySadanala, какую версию Eclipse вы используете? Предлагаю вам использовать новые версии; они быстрее, они по-прежнему поддерживают старые версии java и более стабильны. Вы должны найти Apache 7 начиная с версии Kepler (4.3). eclipse.org/downloads - person Ismael Sarmento; 15.01.2019
comment
@mzjn похоже, что после обновления 92 проблема решена; нам по-прежнему нужна совместимая версия Tomcat. - person Ismael Sarmento; 15.01.2019
comment
@IsmaelSarmento да, я только что решил это, установив новую версию eclipse jee - person Ganesh Chowdhary Sadanala; 16.01.2019

такая же проблема со мной. Это не решение, а обходной путь, который у меня сработал: Buildpath-> Configure buildpath-> Libraries-> Здесь удалите системную библиотеку JRE, указывающую на JRE8, и добавьте системную библиотеку JRE для JRE7.

person AmitB10    schedule 01.05.2016

Использование последней версии 7.x Tomcat (в настоящее время 7.0.69) решило проблему для меня.

Мы также пробовали обходной путь в старой ошибке eclipse, может быть, это тоже помогло решить проблему?

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

Обходной путь:

  • Окно-> Настройки-> Java-> Установленные JRE
  • Снимите флажок с выбранной JRE
  • Нажмите ОК (этот шаг может быть необязательным?)
  • Проверьте JRE еще раз
person metin.n    schedule 03.05.2016
comment
Я обновляюсь до tomcat-7.0.70 и в некоторых случаях вижу проблему. Я использую SUSE Linux версии 12, и все работает нормально, но у меня более старая машина с версией 11 SP 3, и на ней все еще есть ошибка с JDK_1.8.0_91. - person Jeff; 27.07.2016

Обходной путь:

Окно -> Настройки -> Java -> Установленные JRE, выберите другую JRE

возможно, эта версия JDK не подходит:

введите описание изображения здесь


Так что попробуйте вместо этого:

введите описание изображения здесь

Проблема решена!

person Phoenix    schedule 03.07.2016
comment
Соблюдайте осторожность при переходе на более раннюю версию - стоит отметить, что в предыдущих версиях Java есть много известных уязвимостей. - person Jeff; 27.07.2016

Обновление до tomcat 7.0.70 решило проблему для меня

person Gavy    schedule 18.08.2016
comment
Смените сервер Tomcat, я обновился до Tomcat 8 - person Ravi Parekh; 01.11.2018

Хорошо, этот вопрос был год назад, но недавно у меня тоже возникла эта проблема.

Итак, что я сделал:

  1. Обновите tomcat 7 до tomcat 8.
  2. Обновите java до последней версии (java 1.8.0_141).
  3. Обновите системную библиотеку JRE в Проект> Свойства> Путь сборки Java. Убедитесь, что у него последняя версия, в моем случае это jre1.8.0_141 (до этого была предыдущая версия jre1.8.0_111)

Когда я сделал первые два шага, ошибка все еще не устранена, поэтому последний шаг важен. Он не менял автоматически путь сборки для jre.

person kaixas K    schedule 26.07.2017

Я использую Google appengine java sdk и столкнулся с аналогичной проблемой. Мне пришлось добавить

<runtime>java8</runtime>

в файле appengine-web.xml, чтобы он заработал.

person Aniket Thakur    schedule 16.12.2017

Причина: старые версии компилятора Tomcat 6 JSP, похоже, не знают об улучшениях пула констант JDK 8 - например. дескрипторы методов. Новый код в JDK 8u использует дескриптор метода вместо создания анонимного класса. Это приведет к тому, что дескриптор метода будет указан в пуле констант, и компилятор eclipse задохнется от этого - https://bz.apache.org/bugzilla/show_bug.cgi?id=56613

person mohsen.nour    schedule 01.12.2018

Я тоже столкнулся с той же проблемой. У меня был Jdk1.7.0.79. Затем я обновил его с помощью Jdk8.0.120. Тогда проблема решена. После успешного завершения обновления jdk. Зайдите в проект-> очистить. Он восстановит проект, и все красные предупреждения будут устранены.

person Touhid    schedule 09.10.2016