Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

Что-то случилось в 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.

Ответ 2

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

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

Ответ 3

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

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

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

Обход проблемы:

  • Окно- > Настройки- > Java- > Установленные JRE
  • Снимите флажок с выделенного JRE
  • Нажмите "ОК" (этот шаг может быть необязательным?)
  • Проверить снова JRE

Ответ 4

Обход проблемы:

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

Возможно, это издание JDK не подходит:

enter image description here


Попробуйте вместо этого:

enter image description here

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

Ответ 5

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

Ответ 6

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

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

  • Обновить tomcat 7 до tomcat 8.
  • Обновление до последней версии java (java 1.8.0_141).
  • Обновите библиотеку JRE в Project > Properties > Java Build Path. Убедитесь, что у него есть последняя версия, которая в моем случае jre1.8.0_141 (раньше это была предыдущая версия jre1.8.0_111)

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

Ответ 7

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

<runtime>java8</runtime>

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

Ответ 8

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

Ответ 9

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

Ответ 10

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