avertissement: [options] le chemin de la classe bootstrap n'est pas défini avec -source 1.5

138

Je reçois le message d'avertissement au moment de la construction!

avertissement: [options] le chemin de la classe bootstrap n'est pas défini avec -source 1.5

Comment puis-je y remédier?

Sam
la source
1
Forums NetBeans: forums.netbeans.org/topic43819.html
Alex K
voir stackoverflow.com/questions/9164625/... pour une solution au cas où vous utilisez
maven
4
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.
earcam

Réponses:

102

À partir d'un article de blog :

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.

Eduard Wirch
la source
11
Génial, bien qu'il semble plus facile d'utiliser simplement un ancien JDK pour compiler.
dhardy
42

utilisation de bootclasspath

javac -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar \
      -source 1.7 Main.java

Sur les systèmes UNIX, recherchez en rt.jarutilisant:

locate -r '/rt.jar$'

Réglez JAVA_HOMEpour que rt.jarse trouve à $JAVA_HOME/jre/lib/rt.jar, puis:

javac -source 1.7 -bootclasspath "$JAVA_HOME/jre/lib/rt.jar" Main.java

Testé sur Ubuntu 14.04 pour Oracle Java 7 et 8.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
la source
4

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. :-)

n9dyfi
la source
1
"monProjet> Propriétés> Format source / binaire: JDK 7" a fonctionné pour moi
Doctor Parameter
2

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.

Néon
la source
38
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?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
1
Voir le commentaire ci
real_paul
2

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

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    ...
                </configuration>
            </plugin>

La correction de la version source / cible à 9 corrige l'avertissement comme ci-dessous

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                    ...
                </configuration>
            </plugin>
Sandeep T
la source
1
Cela a résolu un problème avec lequel je luttais pendant environ une heure, je ne pouvais tout simplement pas le voir.
Rutendo
-2
  1. Télécharger JDK (sur la version écrite d'avertissement) -> installer

  2. Faites un clic droit sur votre projet -> Propriétés -> Bibliothèques -> Plateforme Java (ajoutez votre JDK installé) -> OK

Erasyl Abenov
la source