web-dev-qa-db-ja.com

タイプJava.io.ObjectInputStreamを解決できません。必要な.classファイルから間接的に参照されています

Eclipseをダウンロードし、サンプルサーブレットプログラムを作成しようとしましたが、次のエラーが発生しました

タイプJava.io.ObjectInputStreamを解決できません。必要な.classファイルから間接的に参照されています

ビルドパスを正しく構成しました。 Java 8とApache Tomcat 7を使用しており、両方のライブラリが正しく参照されています。

問題はJava EE専用です。通常、Java SEプロジェクトは正常に実行されています。

36
user3891270

Java 8 Update 91で、既存のJSPコードを壊す何かが起こりました。それはかなり明らかです。同様の質問とバグレポートのサンプルを次に示します。

これらはすべて、以前のJRE/JDKバージョンを使用する場合には存在しないJava 8 Update 91(またはそれ以降)の問題に関するものです。


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 、このRed Hatバグレポートへのコメントで言及されている 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 Critical Patch Update Advisory-April 2016」で、CVE-2016-3427の脆弱性が言及されています: http://www.Oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753 .html

33
mzjn

TomcatバージョンをTomcat 8.0.xxにアップグレードするだけです。 Java8 <-> Tomcat8

これは私が使用している構成であり、常にうまく機能しています JDK versionTomcat versions

3
Ismael Sarmento

回避策:

ウィンドウ-> 設定-> Java-> インストール済みのJRE、別のJREを選択

おそらくこのJDKエディションは適切ではありません。

enter image description here


代わりにこれを試してください:

enter image description here

問題が解決しました!

1
Phoenix

Tomcat 7.0.70にアップグレードすると問題が解決しました

1
Gavy

最新の7.x Tomcat(現在7.0.69)を使用して、問題を解決しました

古いEclipseバグの回避策も試してみましたが、それは問題を解決することでもありましたか?

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

回避策:

  • ウィンドウ->設定-> Java->インストールされたJRE
  • 選択したJREのチェックを外します
  • [OK]をクリックします(この手順はオプションですか?)
  • JREをもう一度確認する
1
metin.n

Google appengine Java sdkを使用していますが、同様の問題に直面していました。追加しなければならなかった

<runtime>Java8</runtime>

appengine-web.xmlファイルで、機能するようにします。

1
Aniket Thakur

さて、この質問は1年前のものでしたが、最近この問題も発生しました。

だから私がやったこと:

  1. Tomcat 7をTomcat 8に更新します。
  2. 最新のJava(Java 1.8.0_141)に更新します。
  3. プロジェクト>プロパティ> JavaビルドパスでJREシステムライブラリを更新します。私の場合、jre1.8.0_141(以前のバージョンjre1.8.0_111になる前)である最新バージョンを持っていることを確認してください

最初の2つのステップを実行しても、エラーは削除されないため、最後のステップが重要です。 jreのビルドパスは自動的に変更されませんでした。

1
kaixas K

私と同じ問題。これは解決策ではなく、回避策であり、私のために働いた:Buildpath-> Configure buildpath-> Libraries->ここで、JRE8を指すJREシステムライブラリを削除し、JRE7のJREシステムライブラリを追加します。

1
Amit1011

私も同じ問題に直面していました。 Jdk1.7.0.79がありました。次に、Jdk8.0.120で更新しました。その後、問題は解決しました。アップグレードされたjdkが正常に完了した後。 project-> cleanに移動します。プロジェクトが再構築され、すべての赤いアラートが削除されます。

0
Touhid

理由:Tomcat 6 JSPコンパイラの古いバージョンは、JDK 8定数プールの強化を認識していないようです。メソッドハンドル。 JDK 8uの新しいコードは、匿名クラスを作成する代わりにメソッドハンドルを使用しています。これにより、メソッドハンドルが定数プールにリストされ、Eclipseコンパイラーはこれを停止します。 https://bz.Apache.org/bugzilla/show_bug.cgi?id=5661

0
mohsen.nour