2015-08-28 17 views
8

Attualmente sto migrando la mia applicazione da Java 7 a Java 8 e attualmente sto eseguendo il jar Spring 3.1.6. Questo sarebbe compatibile con Java 8 o devo aggiornare il vaso Spring?Java 8 compatibilità Spring

Capisco che la versione Spring 4x ha un supporto naturale per Java 8, ma questo è il momento critico e sto cercando di cambiare il più piccolo barattolo possibile.

+1

forse [questo] (https://stackoverflow.com/questions/24657418/spring-core-3-2-9-java-8) potrebbe aiutarti ... –

+0

vedi questa domanda e le risposte: http: // stackoverflow.com/questions/30072135/spring-3-2-x-with-java-8 –

+0

Grazie, mi ha aiutato. Quindi devo mordere il proiettile e andare per l'aggiornamento del vaso di primavera – cpkarthic

risposta

11

Fondamentalmente le versioni Spring 3.x supportano solo fino a Java-7. Se si desidera migrare a Java-8, è necessario utilizzare la versione Spring 4.x.

Tuttavia alcuni di sgancio a molla nota dice che la Spring Framework 3.2.x sosterrà la distribuzione su JDK 8 runtime per le applicazioni compilate contro JDK 7 (con -target 1.7) o versioni precedenti. Si noti che non sarà supportare il formato di codice bytecode JDK 8 (-target 1.8, come necessario per lambda); eseguire l'aggiornamento a Spring Framework 4.0 per questo scopo.

Seguire il collegamento this per l'articolo di origine.

-3

Java 8 e jvm 8 è completamente compatibile con tutte le versioni precedenti di java. Java intraprende passi scrupolosi per garantire che le nuove versioni non infrangano il vecchio codice. Qualsiasi codice scritto per java 7 può essere compilato con java 8 e qualsiasi codice che hai compilato per java 7 può essere eseguito su jvm 8.

3

No, non è compatibile. Ho incontrato lo stesso problema e mentre molti diranno che Java 8 è completamente retrocompatibile con le versioni precedenti di java, questo risulta non essere vero.

Questo ha un ottimo spiegazione del problema esatto mi sono imbattuto in Java 7 mirato codice con Java 8.

https://gist.github.com/AlainODea/1375759b8720a3f9f094

perché l'API di ConcurrentHashMap è cambiato tra le 2 versioni di Java, interruzioni di primavera sulla avvio e si finisce con

SEVERE: Context initialization failed 
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView; 
    at org.apache.catalina.core.ApplicationContext.getInitParameterNames(ApplicationContext.java:368) 
    at org.apache.catalina.core.ApplicationContextFacade.getInitParameterNames(ApplicationContextFacade.java:367) 
    at org.springframework.web.context.support.WebApplicationContextUtils.registerEnvironmentBeans(WebApplicationContextUtils.java:201) 
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:163) 

ho avuto altra scelta per, ma l'aggiornamento a 4.x primavera (non so se 3.2 o superiore avrebbe lavorato come ho saltato dritto alla 4.x)