come faccio a ottenere eclipse per utilizzare una versione del compilatore diversa per Java?

Sembra che questo dovrebbe essere un compito semplice, con le opzioni nel menu Preferenze per diversi JRE e la possibilità di impostare diversi compilatori e percorsi di generazione per progetto. Tuttavia, sembra anche semplicemente non funziona.

Ad esempio, ho il mio JAVA_HOME impostato su un jre per Java 1.6. Non mi è ancora chiaro come Eclipse usi questo, ma sembra essere inadeguato a questo e non prendere le sostituzioni del progetto. Ho anche installato Java 1.5 e aggiunto un JRE per questo in eclipse nella sezione Java-> Installed JREs.

Nel mio progetto, ho impostato il livello di conformità del compilatore a 1.5. Nel percorso di costruzione del progetto, ho aggiunto la libreria di sistema per Java 1.5 JRE. Tuttavia, sto ricevendo errori di compilazione per una class che implementa PreparedStatement per non implementare metodi astratti che esistono solo in Java PreparedStatement 1.6. Specificamente, i metodi

setAsciiStream(int, InputStream, long) and setAsciiStream(int, InputStream) 

Stranamente, ha funzionato mentre lo stavamo compilando su Java 1.4, per il quale è stato originariamente scritto. Abbiamo aggiunto JREs per Java 1.4 e fatto riferimento alla libreria di sistema nel progetto e impostato il livello del compilatore del progetto su 1.4, e funziona perfettamente. Ma quando faccio le stesse modifiche per cercare di puntare a Java 1.5, usa invece 1.6.

Qualche idea, perché?

Dalla barra dei menu: Progetto -> Proprietà -> Compilatore Java

Abilita impostazioni specifiche del progetto (selezionato) Deseleziona “usa Conformità dall’ambiente di esecuzione” …. Seleziona il “livello di conformità del compilatore” desiderato

Ciò ti permetterà di compilare il codice “1.5” usando un JDK “1.6”.

Se si desidera utilizzare acuitamente un JDK 1.5 per produrre codice conforms a “1.5”, installare un JDK 1.5 appropriato e indicare a eclipse dove è installato tramite:

Finestra -> preferenze -> JRE installati

E poi torna al tuo progetto

Progetto -> Proprietà -> Percorso build Java -> librerie

rimuovere le librerie di sistema 1.6 e: aggiungere libreria … -> JRE System LIbrary -> JRE alternativo -> JRE desiderato.

Verifica che il JRE corretto sia sul percorso di costruzione del progetto, salva tutto e divertiti!

Eclipse utilizza il proprio compilatore interno che può compilare diverse versioni di Java.

Da Guida di Eclipse> Guida dell’utente allo sviluppo di Java> Concetti> Java Builder

Il builder Java crea programmi Java utilizzando il proprio compilatore (il compilatore Eclipse per Java) che implementa la specifica del linguaggio Java.

Per Eclipse Mars.1 Release (4.5.1), questo può targetizzare 1.3 a 1.8 inclusi.

Quando configuri un progetto:

 [project-name] > Properties > Java Compiler > Compiler compliance level 

Questo configura il compilatore Java di Eclipse per compilare il codice alla versione Java specificata, in genere 1.8 oggi.

Le variabili di ambiente host, ad es. JAVA_HOME ecc., Non vengono utilizzate.

Il compilatore Oracle / Sun JDK non viene utilizzato.

Prima di tutto, stai impostando il JRE desiderato o il JDK desiderato?

Anche se Eclipse è impostato correttamente, potrebbe esserci una strana impostazione specifica del progetto da qualche parte. È ansible aprire un menu di scelta rapida su un determinato progetto Java in Esplora progetti e selezionare Proprietà> Compilatore Java per verificarlo.

Se nessuno di questi aiuti, lascia un commento e io darò un’altra occhiata.

Giusto per chiarire, hai impostato JAVA_HOME come variabile di sistema o impostato nelle variabili del percorso di class Eclipse? Sono abbastanza sicuro (ma non del tutto sicuro!) Che la variabile di sistema sia usata dal compilatore della riga di comando (e Ant), ma che Eclipse modifichi questo accroding al JDK usato

Un altro approccio per impostare il compilatore JDK 1.8 con Maven sta usando questo plugin:

  org.apache.maven.plugins maven-compiler-plugin 3.5.1  true true C:\Program Files\Java\jdk1.8.0_102\bin\javac 1.8 1.8