Permettra de compiler pour Java 1.5 de Java 1.7 encore du travail?
J'ai récemment déménagé à Java 7 dans un de mes projets. J'affirme qu'il peut fonctionner sur Java 1.5 simplement parce qu'il n'y a rien que je dépend de qui est en Java 6 ou 7. Cependant lors de la compilation d'aujourd'hui, j'ai remarqué ceci:
bootstrap class path not set in conjunction with -source 1.5
Google a trouvé peu d'information sur cet avertissement. Est-ce à dire que vous ne pouvez pas compiler en Java 1.5 de Java 1.7?
Pas sûr au sujet du message d'erreur, mais je voudrais avoir des tests unitaires qui s'exécutent automatiquement à l'encontre de chaque significative (1.x) la version de Java que je demande à l'appui.
OriginalL'auteur TheLQ | 2011-10-21
Vous devez vous connecter pour publier un commentaire.
Cet Oracle blog explique l'avertissement:
http://blogs.oracle.com/darcy/entry/bootclasspath_older_source
La raison en est, que si vous ne parvenez pas à définir rt.jar pour l'ancienne plate-forme, puis:
OriginalL'auteur paulsm4
Non, il ne le fait pas. Cela signifie qu'il ya une bonne façon et une mauvaise façon de le faire ... et que vous faites de la mauvaise façon.
La bonne façon de compiler du Java 1.5 sur un Java JDK 1.7:
Obtenir une copie de l' "rt.jar" à partir de Java 1.5 et le mettre sur la compilation bootclasspath.
Compiler avec-source de 1,5 et -cible 1.5.
Le message d'avertissement vous indique que vous n'avez pas fait le premier de ces.
La façon dont vous êtes en droit de construction est désormais implicitement à l'aide de la version 1.7 de "rt.jar" pour le Java runtime APIs. Cette peut travail! (En effet, il devrait travail en supposant que vous avez apporté aucune modification au code depuis la dernière construite sur 1.5.) Cependant, il y a un risque que vous pouvez introduire accidentellement des dépendances sur des classes ou des méthodes ajoutée dans Java 1.6 ou 1.7. Qui seraient le résultat d'erreurs d'exécution lorsque vous essayez d'exécuter votre application sur Java 1.5.
OriginalL'auteur Stephen C
Vous feriez mieux d'être mise à la source et la cible de 1,5.
Pour être vraiment sûr que vous n'êtes pas accidentellement intégrant les dépendances sur les nouvelles classes, les méthodes, ou les champs, le maven-animal-sniffer plugin ou quelque chose comme ça.
Je pense qu'il est également recommandé de mettre en
-target 1.5
. Je pense que le classfile numéro de version du format a été frappé entre 1.5 et 1.6, donc 1,5 VM peut-être pas à les charger. (Même si non, mieux vaut prévenir que guérir.)si
-source
et-target
sont spécifiés, la 1.7 compilateur invites pour-xbootclasspath
- qui représente le point 2.Un problème que les animaux sniffer-plugin expose, c'est que certains 3rd party bibliothèques peuvent être à l'aide de Java 6 ou 7 Api. C'est un problème avec les bibliothèques Java qui n'a pas vraiment été apporté à la lumière, parce que nous avons tous simplement de la mise à niveau, mise à niveau et de mise à niveau. Scala et sbt fait un meilleur travail de bâtiment de la croix-différentes versions de bibliothèques.
OriginalL'auteur bmargulies
--source 1.5 assurez-vous que les fichiers de la source se conformer avec Java 5 conventions. --target 1.5 assurez-vous que la classe générée fichiers se conformer avec Java 5 conventions. Aucune de ces va vous protéger contre l'utilisation de Java 6 ou 7 de la bibliothèque de méthodes. Vous devez compiler contre les rt.jar à l'aide de --bootclasspath, ou utiliser quelque chose comme l'animal-sniffer-plugin (si vous utilisez maven), qui permettra d'inspecter tout type de signature, et de comparer avec les profils publiés.
Avec l'animal-sniffer-plugin, vous pouvez être dedans pour un festin, parce que vous pouvez bosse dans la 3e partie des bibliothèques qui utilisent la version 6 de Java Api, ce qui peut causer votre processus de création à l'échec étant donné que vous êtes en pinçant Java 5.
OriginalL'auteur gregturn