Compilare il codice Java scritto per 1.5 per funzionare con 1,4 JRE?
-
13-09-2019 - |
Domanda
Ho un progetto che utilizza generici e alcuni bit e pezzi Java 1.5/6. È possibile compilare questo codice per lavorare su un sistema con un 1,4 JRE?
Uso uno script di build formica e un compito Javac per compilare la libreria. Questo si basa bene mentre l'attributo target è 1,5.
Se cambio l'obiettivo in 1.4 ottengo il seguente errore:
generics are not supported in -source 1.4
(use -source 5 or higher to enable generics)
Quindi aggiungo un attributo di origine e provo un valore di 5 e 1,5. Nuovo errore:
javac: source release 5 requires target release 1.5
Dovrò passare attraverso tutto il mio codice e cambiare le cose 1.5 per far funzionare questo?
Soluzione
Non ho usato nessuna di queste soluzioni, ma c'è
- Retroweaver
- specificando il non supportato
-target jsr14
Maggio opera - Retrotranslator
- Declawer
- JBossretro
Potresti anche trovare javac -XD-printflat
utile (anche se non fate attenzione a non sovrascrivere la tua fonte originale).
Altri suggerimenti
Ho un progetto che utilizza generici e alcuni bit e pezzi Java 1.5/6. È possibile compilare questo codice per lavorare su un sistema con un 1,4 JRE?
No.
Dovrò passare attraverso tutto il mio codice e cambiare le cose 1.5 per far funzionare questo?
Sì. Ma c'è un modo per automatizzarlo, usando uno strumento chiamato Retroweaver. Tuttavia, non c'è garanzia che catturi tutto.
Ho avuto una buona esperienza con il retrotranslator (Retroweaver non ha funzionato bene con ciò di cui avevo bisogno, non riesco a ricordare esattamente cosa).
Ha funzionato molto bene per il mio scopo (creando versioni JDK1.4 di Logback).
I generici sono implementati per cancellazione del tipo in modo che dovrebbero funzionare prima che vengano introdotti i generici. Tuttavia non saresti in grado di compilare il codice con una versione precedente del compilatore (non so perché vorresti farlo)