简体   繁体   English

无法解析java.io.ObjectInputStream类型。它是从所需的.class文件间接引用的

[英]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: 以下是类似问题和错误报告的示例:

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

You simply need to upgrade your Tomcat version, to Tomcat 8.0.xx. 您只需将Tomcat版本升级到Tomcat 8.0.xx. Java8 <-> Tomcat8 Java8 < - > Tomcat8

This is the configuration that I have been using and it has always worked out well 这是我一直在使用的配置,它一直很好 JDK版本 Tomcat版本

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: 解决方法:

  • Window->Preferences->Java->Installed JREs Window-> Preferences-> Java-> Installed JREs
  • Uncheck selected JRE 取消选中选定的JRE
  • Click OK (this step may be optional?) 单击确定(此步骤可以是可选的?)
  • Check JRE again 再次检查JRE

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 : 所以我做了什么:

  1. Update tomcat 7 to tomcat 8. 将tomcat 7更新为tomcat 8。
  2. Update to the latest java (java 1.8.0_141). 更新到最新的java(java 1.8.0_141)。
  3. Update the JRE System Library in Project > Properties > Java Build Path . Project> Properties> Java Build Path中更新JRE系统库。 Make sure it has the latest version which in my case is jre1.8.0_141 (before it was the previous version jre1.8.0_111) 确保它有最新版本,在我的情况下是jre1.8.0_141(之前的版本是jre1.8.0_111之前)

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.

相关问题 Eclpise ingo错误: - &#39;java.io.ObjectInputStream类型无法解析。 它是从所需的.class文件间接引用的 - Eclpise ingo error:-'The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files' Android:无法解析java.awt.Image类型。 它是从所需的.class文件间接引用的 - Android: The type java.awt.Image cannot be resolved. It is indirectly referenced from required .class files 无法解析类型java.lang.Charsequence。 它是从required.class文件间接引用的 - The type java.lang.Charsequence cannot be resolved. It is indirectly referenced from required.class files 无法解析类型 java.lang.Object。 它是从 required.class 文件中间接引用的 - The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files 无法解析java.rmi.RemoteException类型。 它是从java中所需的.class文件错误中间接引用的 - The type java.rmi.RemoteException cannot be resolved. It is indirectly referenced from required .class files error in java “无法解析类型java.util.Map $ Entry。 它是从所需的.class文件间接引用的“ - “The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files” 无法解析java.lang.CharSequence类型。 它是从所需的.class文件间接引用的 - The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files 无法解析java.awt.geom.AffineTransform类型。 它是从所需的.class文件间接引用的 - The type java.awt.geom.AffineTransform cannot be resolved. It is indirectly referenced from required .class files SingleBOdy无法解决。 从所需的.class文件间接引用它 - SingleBOdy cannot be resolved. It is indirectly referenced from required .class files 无法解决 DataAccessException。 它是从所需的 .class 文件间接引用的 - DataAccessException cannot be resolved. It is indirectly referenced from required .class files
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM