2012-03-19 18 views
6

Recentemente sono stato punto da un certo codice rendendolo tramite il nostro ciclo di distribuzione senza gettare qualsiasi errori di compilazione quando si dovrebbe avere (abbiamo pensato) ...compilazione giù una versione - Eclipse, Maven

Il codice in questione essendo utilizzando il nuovo metodo statico Integer.compare che va da Java 1.7.

L'ambiente del server viene eseguito su Java 1.6. Mentre i nostri ambienti di sviluppo hanno installato Java 1.7.

La nostra ipotesi era che l'impostazione delle preferenze del progetto sulla conformità JavaSE-1.6 avrebbe almeno fornito avvisi di compilazione sul codice in questione, tuttavia in Eclipse non sono visibili avvisi o errori.

Progetto> Proprietà> compilatore java> Compliance JDK> Usa il rispetto da ambiente di esecuzione 'JavaSE-1.6' sul percorso di java accumulo

secondariamente che, usiamo Maven per compilare la distribuzione finale. Il pom è chiaramente diretto a rispettare il compilatore 1.6:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <optimize>true</optimize> 
    </configuration> 
</plugin> 

Tuttavia, la generazione di maven viene eseguita correttamente con il codice problema.

Come posso dire sia a Maven che a Eclipse di fallire quando il codice non funziona in una JVM precedente rispetto a quando viene compilato da?

Grazie, Paul.

+0

Mi ricordo di aver già affrontato situazioni simili prima (ma era 1.5 vs 1.6) ma a quel tempo funziona come quello che ti aspettavi. Dubito che ci sia qualche problema in JDK che lo causa? –

risposta

2

Utilizzare il plug-in sniffer animal maven per indicare quando si utilizzano API che non sono compatibili con le versioni precedenti. Mi è stato anche detto che Java 1.7 ha una funzione per questo, ma non ho esperienza personale con esso.

+0

funziona alla grande, almeno posso assicurarmi che il codice errato non lo faccia alla distribuzione. Grazie. – pstanton

2

Installare java 1.6 nell'ambiente di sviluppo, quindi fare clic con il tasto destro del mouse sul progetto in eclissi e andare su Proprietà-> Percorso di costruzione Java. Vai alla scheda Librerie e rimuovi java java 1.7, quindi aggiungi java 1.6 JRE.

Non ho abbastanza familiarità con Maven per rispondere a quella metà.

+0

non c'è modo di installare vecchie versioni di java? – pstanton

+0

Per quanto ne so, si. O il modo in cui ho descritto o la casella successiva nel menu di conformità ha un menu a discesa per il livello di conformità del compilatore. Se si seleziona un java precedente per la conformità del compilatore, nella parte inferiore viene visualizzato un messaggio per assicurarsi che il jre di quel livello sia installato. – Thomas

+0

sì, l'ho notato ma speravo di evitarlo dato che abbiamo diversi progetti con requisiti diversi ... – pstanton