2016-05-01 104 views
31

我已經下載Eclipse和試圖建立一個樣本servlet程序引用,但我得到了以下錯誤無法解析類型java.io.ObjectInputStream。它是間接需要的.class文件

類型java.io.ObjectInputStream中不能得到解決。它是從所需的.class文件間接引用的

我已經正確配置了構建路徑。 我正在使用Java 8和Apache Tomcat 7和兩個庫都被正確引用。

問題僅限於Java EE。通常Java SE項目運行良好。

+0

這是關於什麼特定的Java 8版本? – mzjn

+2

我得到了同樣的例外,同時使用jdk和jre版本8更新91. –

+1

與此相關的紅帽問題:https://access.redhat.com/solutions/2294701 –

回答

0

與我同樣的問題。這不是解決方案,而是一種解決方法,適用於我: 構建路徑 - >配置構建路徑 - >庫 - >這裏刪除指向JRE8的JRE系統庫併爲JRE7添加JRE系統庫。

1

使用最新的7.x Tomcat(目前7.0.69)爲我解決了問題

我們也在舊的eclipse bug中嘗試了一種解決方法,也許這也是解決問題的一部分嗎?

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

解決方法:

  • 窗口 - >首選項 - > Java的>已安裝的JRE
  • 取消選中選定的JRE
  • 點擊OK(這個步驟可以是可選的?)
  • 再次檢查JRE
+0

我升級到tomcat-7.0.70,在某些情況下我看到了這個問題。我使用SUSE Linux版本12,並且所有都是協同的,但是我在版本11 SP 3上有一臺較舊的機器,並且該版本仍然存在JDK_1.8.0_91的錯誤。 – Jeff

1

解決方法:

窗口 - > - >的Java - >安裝的JRE, 選擇不同的JRE

也許這JDK版本不適合:

enter image description here


那麼試試這個來代替:

enter image description here

問題解決了!

+1

降級時務必謹慎 - 值得注意的是,以前版本的Java中存在許多已知的安全漏洞。 – Jeff

28

發生在Java 8 Update 91中的事件破壞了現有的JSP代碼。這似乎很清楚。下面是類似的問題和錯誤報告的樣本:

所有這些都是關於Java 8 Update 91(或更高版本)在使用較早的JRE/JDK版本時不存在的問題。


從2016年1月22日將出現以下的OpenJDK變更是相關的:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb(提交信息 「8144430:改善JMX連接」)。該更改集似乎與此漏洞相關,https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427,在此紅帽bug報告https://bugzilla.redhat.com/show_bug.cgi?id=1336481的評論中提及。

Update 91發行說明文檔提到JDK-8144430(非公開票):http://www.oracle.com/technetwork/java/javase/8u91-relnotes-2949462.html

在「Oracle重要補丁更新公告 - 2016年4月」中,提到了CVE-2016-3427漏洞:http://www.oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html

+0

面臨同樣的問題,但一旦我移動到tomcat 7的東西工作正常..使用jdk8_121 – dom

+0

@dom,在它說的問題「我正在使用Java 8和Apache Tomcat 7」。那麼,「一旦移動到tomcat 7」,你的意思是什麼? – mzjn

2

您只需將Tomcat版本升級到Tomcat 8.0.xx即可。 Java8 < - > Tomcat8

這是我一直在使用的配置,它一直都很順利 JDK version Tomcat versions

+1

對我來說,這似乎是Java 8 Update 91中的一個錯誤。我懷疑升級Tomcat會爲每個人解決問題。請參閱http://stackoverflow.com/questions/36981733/unable-to-compile-jsp-file-with-jdk1-8-0-92#comment62126450_36981733-。 – mzjn

+0

@ user3891270:這個答案有幫助嗎?如果升級到Tomcat 8,它會工作嗎? – mzjn

0

升級到Tomcat 7.0.70解決了這個問題對我來說

-1

我也面臨同樣的問題。我有Jdk1.7.0.79。然後我用Jdk8.0.120更新了它。然後問題解決了。成功完成升級後的jdk。轉到項目 - >清理。它會重建項目,所有紅色警報將被消除。

0

好的,這個問題是一年前,但我最近也遇到了這個問題。

所以我做了什麼:

  1. 更新的Tomcat 7到tomcat 8。
  2. 更新到最新的java(java 1.8.0_141)。
  3. 更新JRE系統庫項目>屬性> Java構建路徑。 確保它有最新的版本,這在我的情況是jre1.8.0_141 (這是以前的版本jre1.8.0_111之前)

當我做了前兩步仍然沒有刪除錯誤,所以最後一步很重要。它不會自動更改jre的構建路徑。

0

我使用Google appengine java sdk並面臨類似問題。我不得不添加

<runtime>java8</runtime> 

在appengine-web.xml文件,使其工作。

相關問題