Cela m'a causé un mal de tête en utilisant String.join de Java 8 dans une construction Maven avec source et cible définies sur 7. J'ai utilisé la règle requireJavaVersion de maven -enforcer-plugin pour appliquer la plage <version>[1.7.0,1.7.0-79]</version>qui au moins rompt la construction avec un message clair plutôt qu'un test avec un message obscur.
Pour utiliser javac de JDK N vers un compilateur croisé vers une version de plate-forme plus ancienne, la bonne pratique consiste à:
Utilisez l'ancien paramètre -source.
Définissez le bootclasspath à compiler par rapport au rt.jar (ou équivalent) pour l'ancienne plate-forme.
Si la deuxième étape n'est pas franchie, javac utilisera consciencieusement les anciennes règles de langage combinées avec de nouvelles bibliothèques, ce qui peut entraîner des fichiers de classe qui ne fonctionnent pas sur l'ancienne plate-forme car des références à des méthodes inexistantes peuvent être incluses.
J'utilise actuellement Netbeans IDE 8.0.2 avec JDK 1.8 sur Linux Mint 17.1 qui a java -version = 1.7.0_65. Donc, pour pouvoir exécuter des fichiers JAR, j'ai dû définir myProject> Propriétés> Format source / binaire: JDK 7. Cependant, lors de la construction (myProject> Clean and Build), j'ai reçu un avertissement similaire: avertissement: [options] chemin de la classe de démarrage non défini en conjonction avec -source 1.7.
La solution était d'ajouter la plate-forme Linux Mint JDK1.7 à la liste des plates-formes Netbeans.
Cela peut être fait en allant dans monProjet> Propriétés> Bibliothèques et en cliquant sur le bouton Gérer les plates-formes ... Ensuite, dans la fenêtre Java Platform Manager, cliquez sur Ajouter une plate-forme ... et sélectionnez: Java Standard Edition, cliquez sur Suivant et accédez à / usr / lib / jvm / java-7-openjdk-amd64 (ou quel que soit l'emplacement de la version JDK 1.7 ). Le nom de la plate-forme sera défini sur JDK1.7. Cliquez simplement sur Terminer et vous avez terminé.
Vous pouvez maintenant sélectionner la plateforme Java dans les propriétés du projet. En sélectionnant JDK1.7 et en exécutant Clean and Build: plus d'avertissements. :-)
Avertissements pouvant être activés ou désactivés avec l'option -Xlint
Activez le nom d'avertissement avec l'option -Xlint: nom, où nom est l'un des noms d'avertissement suivants. De même, vous pouvez désactiver le nom d'avertissement avec l'option -Xlint: -name: ...
options Avertir des problèmes liés à l'utilisation des options de ligne de commande. Voir Exemple de compilation croisée pour un exemple de ce type d'avertissement.
Veuillez noter que ce n'est pas une bonne idée de fermer les avertissements comme celui-ci
Alexander Malakhov
9
d'accord, mais il est parfois préférable de désactiver certains avertissements plutôt que d'en afficher des centaines afin que vos véritables avertissements soient masqués.
Neon
3
Quelqu'un peut-il donner un exemple minimal de quelque chose qui ne va pas en ignorant cet avertissement?
Assurez-vous que votre version jdk et la version source du compilateur java sont identiques. Par exemple, si vous utilisez maven et que vous avez configuré le projet à l'aide de JDK 9, l'extrait de code pom suivant passerait par l'avertissement ci-dessus
<version>[1.7.0,1.7.0-79]</version>
qui au moins rompt la construction avec un message clair plutôt qu'un test avec un message obscur.Réponses:
À partir d'un article de blog :
la source
utilisation de bootclasspath
Sur les systèmes UNIX, recherchez en
rt.jar
utilisant:Réglez
JAVA_HOME
pour quert.jar
se trouve à$JAVA_HOME/jre/lib/rt.jar
, puis:Testé sur Ubuntu 14.04 pour Oracle Java 7 et 8.
la source
J'utilise actuellement Netbeans IDE 8.0.2 avec JDK 1.8 sur Linux Mint 17.1 qui a java -version = 1.7.0_65. Donc, pour pouvoir exécuter des fichiers JAR, j'ai dû définir myProject> Propriétés> Format source / binaire: JDK 7. Cependant, lors de la construction (myProject> Clean and Build), j'ai reçu un avertissement similaire: avertissement: [options] chemin de la classe de démarrage non défini en conjonction avec -source 1.7.
La solution était d'ajouter la plate-forme Linux Mint JDK1.7 à la liste des plates-formes Netbeans.
Cela peut être fait en allant dans monProjet> Propriétés> Bibliothèques et en cliquant sur le bouton Gérer les plates-formes ... Ensuite, dans la fenêtre Java Platform Manager, cliquez sur Ajouter une plate-forme ... et sélectionnez: Java Standard Edition, cliquez sur Suivant et accédez à / usr / lib / jvm / java-7-openjdk-amd64 (ou quel que soit l'emplacement de la version JDK 1.7 ). Le nom de la plate-forme sera défini sur JDK1.7. Cliquez simplement sur Terminer et vous avez terminé.
Vous pouvez maintenant sélectionner la plateforme Java dans les propriétés du projet. En sélectionnant JDK1.7 et en exécutant Clean and Build: plus d'avertissements. :-)
la source
L'avertissement peut être désactivé avec une nouvelle sous-option JDK 7 dans la famille -Xlint, -Xlint: -options. par exemple
$ javac -source 1.5 -Xlint: -options exemple.java
sources: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source
et
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#xlintwarnings
Avertissements pouvant être activés ou désactivés avec l'option -Xlint
Activez le nom d'avertissement avec l'option -Xlint: nom, où nom est l'un des noms d'avertissement suivants. De même, vous pouvez désactiver le nom d'avertissement avec l'option -Xlint: -name: ...
options Avertir des problèmes liés à l'utilisation des options de ligne de commande. Voir Exemple de compilation croisée pour un exemple de ce type d'avertissement.
la source
Assurez-vous que votre version jdk et la version source du compilateur java sont identiques. Par exemple, si vous utilisez maven et que vous avez configuré le projet à l'aide de JDK 9, l'extrait de code pom suivant passerait par l'avertissement ci-dessus
La correction de la version source / cible à 9 corrige l'avertissement comme ci-dessous
la source
Télécharger JDK (sur la version écrite d'avertissement) -> installer
Faites un clic droit sur votre projet -> Propriétés -> Bibliothèques -> Plateforme Java (ajoutez votre JDK installé) -> OK
la source