[英]The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files
I have downloaded Eclipse and tried to create a sample servlet program but I got following error 我已经下载了Eclipse并试图创建一个示例servlet程序,但是我遇到了以下错误
The type java.io.ObjectInputStream cannot be resolved.
无法解析java.io.ObjectInputStream类型。 It is indirectly referenced from required .class files
它是从所需的.class文件间接引用的
I have configured build path correctly. 我已正确配置构建路径。 I am using Java 8 and Apache Tomcat 7 and libraries for both are referenced correctly.
我正在使用Java 8和Apache Tomcat 7,并且正确引用了两者的库。
Problem is specifically for Java EE only. 问题仅适用于Java EE。 Ordinarily Java SE projects are running fine.
通常Java SE项目运行正常。
Something happened in Java 8 Update 91 that broke existing JSP code. Java 8 Update 91中发生了破坏现有JSP代码的事情。 That seems pretty clear.
这似乎很清楚。 Here is a sample of similar questions and bug reports:
以下是类似问题和错误报告的示例:
java.io.ObjectInputStream
in Update 91 that "made it incompatible with RHEL6's current ECJ version") java.io.ObjectInputStream
的更改“使其与RHEL6当前的ECJ版本不兼容”) All these are about problems with Java 8 Update 91 (or later) that are not present when using earlier JRE/JDK versions. 所有这些都是关于使用早期JRE / JDK版本时不存在的Java 8 Update 91(或更高版本)的问题。
The following OpenJDK changeset from 22 January 2016 appears to be related: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb (commit message "8144430: Improve JMX connections"). 从2016年1月22日开始的以下OpenJDK变更集似乎是相关的: http ://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb(提交消息“8144430:改进JMX连接”)。 The changeset seems to be related to this vulnerability, https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427 , which is mentioned in a comment to this Red Hat bug report, https://bugzilla.redhat.com/show_bug.cgi?id=1336481 .
变更集似乎与此漏洞有关, https ://cve.mitre.org/cgi-bin/cvename.cgi?name = CVE-2016-3427,在此Red Hat错误报告的评论中提到, https ://bugzilla.redhat.com/show_bug.cgi?id = 1336481 。
The Update 91 release notes document mentions JDK-8144430 (non-public ticket): http://www.oracle.com/technetwork/java/javase/8u91-relnotes-2949462.html . 更新91发行说明文档提到JDK-8144430(非公开票证): http : //www.oracle.com/technetwork/java/javase/8u91-relnotes-2949462.html 。
In "Oracle Critical Patch Update Advisory - April 2016", the CVE-2016-3427 vulnerability is mentioned: http://www.oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html . 在“Oracle重要补丁更新公告 - 2016年4月”中,提到了CVE-2016-3427漏洞: http : //www.oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html 。
same problem with me. 和我一样的问题。 This is not a solution but a workaround, which worked for me: Buildpath->Configure buildpath->Libraries-> Here remove the JRE system library pointing to JRE8 and add JRE system library for JRE7.
这不是解决方案,而是一种解决方法,对我有用:Buildpath-> Configure buildpath-> Libraries->这里删除指向JRE8的JRE系统库并为JRE7添加JRE系统库。
Using the latest 7.x Tomcat (currently 7.0.69) solved the problem for me. 使用最新的7.x Tomcat(目前为7.0.69)解决了我的问题 。
We did also try a workaround in a old eclipse bug, maybe that did it's part to solve the problem, too? 我们也尝试了一个旧的日食错误的解决方法,也许这也解决了这个问题?
https://bugs.eclipse.org/bugs/show_bug.cgi?id=67414 https://bugs.eclipse.org/bugs/show_bug.cgi?id=67414
Workaround: 解决方法:
Workaround: 解决方法:
Window -> Preferences -> Java -> Installed JREs , select a different JRE 窗口 - > 首选项 - > Java - > 已安装的JRE ,选择不同的JRE
maybe this JDK edition is not suitable: 也许这个JDK版不适合:
So try this one instead: 所以试试这个:
Problem solved! 问题解决了!
升级到tomcat 7.0.70为我解决了这个问题
Okay, this question was a year ago but I recently got this problem as well. 好的,这个问题是在一年前,但我最近也遇到了这个问题。
So what I did : 所以我做了什么:
When I did the first two steps it still doesn't remove the error so the last step is important. 当我执行前两个步骤时,它仍然不会删除错误,因此最后一步很重要。 It didn't automatically change the build path for jre.
它没有自动更改jre的构建路径。
I am using Google appengine java sdk and was facing similar issue. 我正在使用谷歌appengine java sdk,并面临类似的问题。 I had to add
我不得不补充一下
<runtime>java8</runtime>
in appengine-web.xml file to make it work. 在appengine-web.xml文件中使其工作。
I was also facing same issue. 我也面临同样的问题。 I had Jdk1.7.0.79.
我有Jdk1.7.0.79。 Then I updated it with Jdk8.0.120.
然后我用Jdk8.0.120更新了它。 Then the problem solved.
然后问题解决了。 After successful completion of upgraded jdk.
成功完成升级后的jdk。 Go to project->clean.
转到项目 - >清理。 It will rebuild the project and all red alert will be eliminated.
它将重建项目,并将消除所有红色警报。
Reason : Old versions of Tomcat 6 JSP compiler don't seem to be aware of JDK 8 constant pool enhancements - eg. 原因:旧版本的Tomcat 6 JSP编译器似乎并不了解JDK 8常量池增强功能 - 例如。 method handles.
方法句柄。 New code in JDK 8u is using a method handle instead of creating an anonymous class.
JDK 8u中的新代码使用方法句柄而不是创建匿名类。 This will cause the method handle to be listed in the constant pool and the eclipse compiler will choke on this - https://bz.apache.org/bugzilla/show_bug.cgi?id=56613
这将导致方法句柄列在常量池中,并且eclipse编译器会阻塞它 - https://bz.apache.org/bugzilla/show_bug.cgi?id=56613
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.