2016-05-01 68 views
31

ho scaricato Eclipse e cercato di creare un programma di esempio servlet ma ho ottenuto seguente erroreIl tipo java.io.ObjectInputStream non può essere risolto. Si è indirettamente riferimento dal file .class richiesti

Il tipo java.io.ObjectInputStream non può essere risolto. Fa riferimento indirettamente dai file .class richiesti

Ho configurato il percorso di compilazione correttamente. Sto usando Java 8 e Apache Tomcat 7 e le librerie per entrambi sono referenziate correttamente.

Il problema è specifico solo per Java EE. I progetti ordinariamente Java SE stanno andando bene.

+0

Qual è la versione specifica di Java 8? – mzjn

+2

Ricevo la stessa eccezione con jdk e jre Versione 8 Aggiornamento 91. –

+1

Problema di Red Hat correlato a questo: https://access.redhat.com/solutions/2294701 –

risposta

0

stesso problema con me. Questa non è una soluzione ma una soluzione alternativa, che ha funzionato per me: Buildpath-> Configura buildpath-> Libraries-> Qui rimuovere la libreria di sistema JRE che punta a JRE8 e aggiungere la libreria di sistema JRE per JRE7.

1

Utilizzare l'ultimo 7.x Tomcat (attualmente 7.0.69) ha risolto il problema per me.

Abbiamo anche provato una soluzione in un vecchio bug di eclissi, forse anche questo ha contribuito a risolvere il problema?

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

Soluzione:

  • Finestra-> Preferenze> Java-> JRE installata
  • Deseleziona selezionato JRE
  • Fare clic su OK (questo passaggio può essere opzionale?)
  • Controllare ancora JRE
+0

Sto aggiornando a tomcat-7.0.70 e in alcuni casi vedo il problema. Io uso SUSE Linux versione 12 e tutto è copacetico, ma ho un vecchio computer sulla versione 11 SP 3, e quello ha ancora l'errore con JDK_1.8.0_91. – Jeff

1

Soluzione:

Finestra ->Preferenze ->Java ->JRE installati, selezionare un diverso JRE

forse questa edizione JDK non è adatto:

enter image description here


Quindi provare questo invece:

enter image description here

Problema risolto!

+1

Prestare attenzione durante il downgrade: vale la pena notare che ci sono molte vulnerabilità di sicurezza note nelle versioni precedenti di Java. – Jeff

28

È successo qualcosa in Java 8 Update 91 che ha infranto il codice JSP esistente. Sembra abbastanza chiaro.Ecco un esempio di domande simili e segnalazioni di errori:

Tutti questi sono relativi a problemi con Java 8 Update 91 (o successivi) che non sono presenti quando si utilizzano versioni JRE/JDK precedenti.


Il seguente insieme di modifiche OpenJDK dal 22 gennaio 2016 al sembra essere correlati: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/32f64c19b5fb (messaggio di commit "8.144.430: migliorare i collegamenti JMX"). Il changeset sembra essere correlato a questa vulnerabilità, https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427, menzionata in un commento a questo bug report di Red Hat, https://bugzilla.redhat.com/show_bug.cgi?id=1336481.

Il documento di note sull'aggiornamento 91 note menziona JDK-8144430 (biglietto non pubblico): http://www.oracle.com/technetwork/java/javase/8u91-relnotes-2949462.html.

In "Oracle Critical Patch Update Advisory - Aprile 2016", è citata la vulnerabilità CVE-2016-3427: http://www.oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html.

+0

di fronte allo stesso problema ma una volta passato a tomcat 7 le cose stanno funzionando bene..utilizzando jdk8_121 – dom

+0

@dom, nella domanda si dice "Sto usando Java 8 e Apache Tomcat 7". Quindi cosa intendi con "una volta che mi sposto a Tomcat 7"? – mzjn

2

È sufficiente aggiornare la versione di Tomcat a Tomcat 8.0.xx. Java8 < -> Tomcat8

Questa è la configurazione che ho utilizzato ed ha sempre funzionato bene JDK version Tomcat versions

+1

Per me sembra un bug in Java 8 Update 91. Dubito che l'aggiornamento di Tomcat risolverà il problema per tutti. Vedi http://stackoverflow.com/questions/36981733/unable-to-compile-jsp-file-with-jdk1-8-0-92#comment62126450_36981733-. – mzjn

+0

@ user3891270: questa risposta è utile? Funziona se si esegue l'aggiornamento a Tomcat 8? – mzjn

0

Aggiornamento a Tomcat 7.0.70 ha risolto il problema per me

-1

Anch'io stavo affrontando lo stesso problema. Ho avuto Jdk1.7.0.79. Poi l'ho aggiornato con Jdk8.0.120. Quindi il problema risolto. Dopo il completamento con successo del jdk aggiornato. Vai a project-> clean. Ricostruirà il progetto e tutti gli allarmi rossi saranno eliminati.

0

Ok, questa domanda era un anno fa ma di recente ho avuto anche questo problema.

Quindi quello che ho fatto:

  1. Aggiornamento Tomcat 7 a 8 Tomcat.
  2. Aggiornamento all'ultima java (java 1.8.0_141).
  3. Aggiornamento della libreria di sistema JRE in Progetto> Proprietà> Percorso di creazione Java. Assicurarsi che ha l'ultima versione che nel mio caso è jre1.8.0_141 (prima era la versione precedente jre1.8.0_111)

Quando ho fatto i primi due passi ancora non rimuovere il errore quindi l'ultimo passaggio è importante. Non ha cambiato automaticamente il percorso di costruzione di jre.

0

Sto usando Google appengine java sdk e ho riscontrato problemi simili. Ho dovuto aggiungere

<runtime>java8</runtime> 

nel file appengine-web.xml per farlo funzionare.