Je veux compiler mes .Java (plusieurs) en un .jar
compatibles avec au moins Java 1.6
et plus récent, de préférence Java 1.5
et versions plus récentes de Java. (J'ai Java 1.7.0_5
)
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 devrez peut-être également définir le paramètre suivant pour indiquer la version de votre code.
-source release
-Spécifie la version du code source acceptée.
Depuis JDK 9, javac prend en charge une nouvelle option pour la compilation croisée
javac --release N ...
ce qui équivaut à
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 pots, veuillez spécifier lequel.
Vous pouvez spécifier la version cible du compilateur plus bas que la build Java (toutes les réponses l'ont dit essentiellement)) mais vous ne devriez pas: c'est assez compliqué car cela ne fonctionne que si vous fournissez également la classe bibliothèques pour la version cible réelle. Si vous faites cela, vous êtes beaucoup mieux avec simplement en utilisant cette ancienne version Java pour compiler. Beaucoup plus propre et moins de choses à configurer. 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 pouvez faire, c'est dans votre cycle d'idées et de développement, utilisez le -target
/-bootclasspath
astuce pour obtenir un compilateur plus rapide et de meilleurs avertissements, mais l'informatique et les versions doivent alors être effectuées avec la version cible.
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 d'accord pour toutes les versions de JVM 1.5 et supérieures:
-source 1,5