Je reçois donc- warning: [options] bootstrap class path not set in conjunction with -source 1.6
Et je suis sur le point de poser 3 questions à ce sujet. Je comprends que je dois définir le chemin de classe bootstrap mais je ne suis pas sûr de comprendre comment. Un rapide google vient de m'envoyer vers des pages citées à partir de la page Oracle, mais j'ai lu la page Oracle et ne sentais pas que je le comprenais particulièrement bien.
J'utilise actuellement ce code sur Netbeans, donc tout ce que j'ai à faire est d'appuyer sur le bouton de lecture pour qu'il se compile et s'exécute. Existe-t-il une propriété qui dicte comment cela se compilera afin que je puisse ajouter dans le chemin de classe bootstrap?
En outre, pour l'éventualité à venir que je l'enlèverai en cours d'exécution uniquement sur Netbeans et l'exécuter à partir de la ligne de commande, quelle est la bonne façon de compiler avec le chemin de classe bootstrap là-bas? Ils disent $ javac -source 6 HelloWorld.Java
Mais dire simplement -source 1.6
Serait-il vraiment la solution?
Peut-être une question encore plus importante, comment puis-je éviter ce type d'avertissement à l'avenir? Si je comprends encore un peu, je fais référence à une ancienne source Java et donc à des méthodes plus anciennes. Je ne sais pas comment ni quand cela s'est produit.
Vous effectuez une compilation croisée. Vous utilisez un compilateur JDK 7 pour compiler des classes pour JDK 6. C'est correct mais pour éviter les problèmes, le compilateur veut mettre la main sur JDK 6 rt.jar
. Le raisonnement derrière cela est que vous pouvez réellement générer des classes qui ne fonctionnent pas avec JDK 6 car vous utilisez peut-être les anciennes règles de langage (dans ce cas 1.6) mais les toutes nouvelles classes bootstrap). Certaines méthodes peuvent ne pas être présentes dans l'ancien JDK par exemple. Ainsi, vous obtenez votre compilation, mais une fois que vous exécutez le programme, elle peut exploser avec un MethodNotFoundException
.
Quelques solutions, vous pouvez en choisir une
rt.jar
de JDK 6. Pourquoi ne pas utiliser l'ancien compilateur que même?rt.jar
inclus). Pourquoi même utiliser 7 si aucune fonction 7 n'est nécessaire.Je comprends que je dois définir le chemin de classe bootstrap mais je ne suis pas sûr de comprendre comment.
Dans Netbeans 8.0.2, accédez à:
Run > Set Project Configuration > Customise...
Dans la fenêtre Catégories, accédez à:
Build > Compiling
Le champ inférieur est "Options supplémentaires du compilateur" auquel vous pouvez ajouter:
-bootclasspath /your/path/to/lower/Java/version/lib/rt.jar
Avait le même avertissement de compilation sur la console sur macOS. Ici, l'option de compilation à ajouter est
-bootclasspath /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar
Notez que sur macOS, pour Java versions <= 1.6 (celles publiées par Apple), le rt.jar
est appelé classes.jar
Cliquez simplement avec le bouton droit sur les propriétés du projet, puis accédez à Binding et choisissez le JDK 1.7 à condition que vous utilisiez ses fonctionnalités dans votre projet NetBeans et c'est la raison pour laquelle vous rencontrez le problème. Cela aidera à résoudre le problème et a fonctionné pour moi.