web-dev-qa-db-fra.com

Comment compiler un .Java avec le support des anciennes versions de Java?

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)

30
Primm

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.

18
gtiwari333

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
10
Joe Darcy

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.

3
cha0site

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.

1
eckes

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

0
tofarr