The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files
Asked Answered
D

10

46

I have downloaded Eclipse and tried to create a sample servlet program but I got following error

The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files

I have configured build path correctly. I am using Java 8 and Apache Tomcat 7 and libraries for both are referenced correctly.

Problem is specifically for Java EE only. Ordinarily Java SE projects are running fine.

Decanter answered 1/5, 2016 at 5:2 Comment(8)
What specific Java 8 version is this about?Underpin
I am getting the same exception with both jdk and jre Version 8 Update 91.Truthful
Red Hat issue related to this : access.redhat.com/solutions/2294701Truthful
@İbrahimGürses I can't access it due to login restrictions. It would be kind if you could post the conclusion or solution if there is any.Timbering
@flob: The suggested resolution is "Consider precompiling JSPs as a workaround". There is also a link to a reopened bug report (1223609) and note that says "ecj is an older version that does not support java 8". I don't know what to make of that. There was no problem with Java 8 Update 77 AFAIK.Underpin
The following bug was resolved on May 2 as "not an issue" with this comment: "Closing as not an issue. This should be resolved by upgrading to latest versions of Tomcat." bugs.openjdk.java.net/browse/JDK-8155588. A customer submitted workaround says "the only work around is to go back older JDK/JRE version and pray that the glitch will go away with the new release".Underpin
In a comment in this Red Hat issue, bugzilla.redhat.com/show_bug.cgi?id=1336481, the following vulnerability is mentioned: cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427. It is also in Oracle Critical Patch Update Advisory - April 2016: oracle.com/technetwork/security-advisory/….Underpin
I have same problem with JDK 1.8.0_191 . Then I have change it 1.8.0_162 and its working nowRangel
U
42

Something happened in Java 8 Update 91 that broke existing JSP code. 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.


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"). 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.

The Update 91 release notes document mentions JDK-8144430 (non-public ticket): 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.

Underpin answered 1/5, 2016 at 5:2 Comment(2)
facing the same issue but once I move to tomcat 7 things are working fine..using jdk8_121Girt
@dom, in the question it says "I am using Java 8 and Apache Tomcat 7". So what do you mean by "once I move to tomcat 7"?Underpin
N
8

You simply need to upgrade your Tomcat version, to Tomcat 8.0.xx. Java8 <-> Tomcat8

This is the configuration that I have been using and it has always worked out well JDK version Tomcat versions

Nuno answered 22/7, 2016 at 18:27 Comment(6)
To me it seems like a bug in Java 8 Update 91. I doubt that upgrading Tomcat will fix the issue for everyone. See #36982233.Underpin
@user3891270: Does this answer help? Does it work if you upgrade to Tomcat 8?Underpin
Runtime Environments->Add->Apache->till 7 version i could find but 8th version of apache is not shown.How to add it externally.Please help me broWynny
@GaneshChowdharySadanala what version of Eclipse are you using? I suggest you to use new versions; they are faster, they still support old versions of java and more stable. You should find Apache 7 from version Kepler (4.3) on. eclipse.org/downloadsNuno
@Underpin it seems that from Update 92 on, the issue is solved; we still need to have a compatible version of Tomcat.Nuno
@IsmaelSarmento yeah I just resolved it by installing new version of eclipse jeeWynny
M
3

Reason : Old versions of Tomcat 6 JSP compiler don't seem to be aware of JDK 8 constant pool enhancements - eg. method handles. New code in JDK 8u is using a method handle instead of creating an anonymous class. 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

Matsumoto answered 1/12, 2018 at 13:29 Comment(0)
Z
2

Using the latest 7.x Tomcat (currently 7.0.69) solved the problem for me.

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

Workaround:

  • Window->Preferences->Java->Installed JREs
  • Uncheck selected JRE
  • Click OK (this step may be optional?)
  • Check JRE again
Zenaidazenana answered 3/5, 2016 at 12:29 Comment(1)
I am upgrading to tomcat-7.0.70, and i am seeing the problem in some cases. I use SUSE Linux version 12 and all is copacetic, but i have an older machine on version 11 SP 3, and that one still has the error with JDK_1.8.0_91.Retinitis
D
2

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.
  2. Update to the latest java (java 1.8.0_141).
  3. Update the JRE System Library in Project > Properties > Java Build Path. 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)

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.

Dasie answered 26/7, 2017 at 1:41 Comment(0)
P
1

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.

Photoelectrotype answered 1/5, 2016 at 13:18 Comment(0)
B
1

Workaround:

Window -> Preferences -> Java -> Installed JREs, select a different JRE

maybe this JDK edition is not suitable:

enter image description here


So try this one instead:

enter image description here

Problem solved!

Burkett answered 3/7, 2016 at 16:54 Comment(1)
Exercise caution when downgrading -- it's worth noting that there are many known security vulnerabilities in prior versions of Java.Retinitis
U
1

Upgrading to tomcat 7.0.70 resolved the issue for me

Unbent answered 18/8, 2016 at 18:20 Comment(1)
Change the Tomcat server, I upgraded to Tomcat 8Jemy
S
1

I am using Google appengine java sdk and was facing similar issue. I had to add

<runtime>java8</runtime>

in appengine-web.xml file to make it work.

Stutz answered 16/12, 2017 at 4:25 Comment(0)
H
0

I was also facing same issue. I had Jdk1.7.0.79. Then I updated it with Jdk8.0.120. Then the problem solved. After successful completion of upgraded jdk. Go to project->clean. It will rebuild the project and all red alert will be eliminated.

Hamer answered 9/10, 2016 at 14:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.