Comment compiler a.java avec le support des anciennes versions de Java?
Je veux compiler mon .java (plusieurs) en un {[0] } qui sont compatibles avec au moins Java 1.6
et les versions plus récentes, de préférence Java 1.5
et les versions plus récentes de Java. (J'ai Java 1.7.0_5
)
5 réponses
Oui, vous pouvez définir la version du compilateur au moment de la compilation. Et compilez votre code java dans les anciennes versions de java.
De L'article Oracle : http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html
Exemple De Compilation Croisée
Ici, nous utilisons javac pour compiler du code qui s'exécutera sur une machine virtuelle 1.4.
% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \
-extdirs "" OldCode.java
Vous pourriez également avoir besoin du paramètre suivant pour définir la version de votre code.
-source release
- spécifie la version de le code source accepté.
Depuis JDK 9, javac prend en charge une nouvelle option pour la compilation croisée
javac --release N ...
, Qui est équivalent à
javac -source N -target N –bootclasspath rtN.jar
Vous pouvez utiliser javac -target 1.5 <source files>
.
Si vous utilisez un système de construction, Eclipse ou un autre IDE pour construire des jars, veuillez spécifier lequel.
Vous pouvez utiliser la dernière version du JDK et définir le niveau source sur 1.5 - tant que vous n'utilisez pas les classes / méthodes introduites après 1.5, vous devriez être ok pour toutes les versions de la JVM 1.5 et supérieures:
Source de 1,5
Vous pouvez spécifier la version cible du compilateur inférieure à la version java de build (toutes les réponses le disent essentiellement) mais vous ne devriez pas: c'est assez compliqué car cela ne fonctionne que si vous fournissez également les bibliothèques de classes pour la version cible réelle. Si vous faites cela, vous êtes beaucoup mieux avec simplement en utilisant cette ancienne version de Java pour compiler. Beaucoup plus propre et moins de choses à installer. Pour Java 9 les options sont un peu plus agréables mais vous avez toujours besoin d'un vieux JDK qui traîne pour le rt.jar.
Ce que vous peut faire est dans votre cycle ide et dedvelopment utiliser le -target
/-bootclasspath
astuce pour obtenir un compilateur plus rapide et de meilleurs avertissements, mais il et release builds alors devrait être fait avec la version cible.