attenzione: [opzioni] percorso della classe bootstrap non impostato in congiunzione con -source 1.5


138

Ricevo il messaggio di avviso al momento della creazione!

attenzione: [opzioni] percorso della classe bootstrap non impostato in congiunzione con -source 1.5

Come posso ripararlo?




consultare stackoverflow.com/questions/9164625/… per una soluzione nel caso in cui si stia utilizzando
maven

4
Questo mi ha causato mal di testa usando String.join da Java 8 in una build Maven con source e target impostati su 7. Ho usato la regola requestJavaVersion del plug-in maven -enforcer per imporre l'intervallo <version>[1.7.0,1.7.0-79]</version>che almeno interrompe la build con un messaggio chiaro anziché un prova con un messaggio oscuro.
earcam

Risposte:


102

Da un post sul blog :

Per utilizzare javac da JDK N al cross-compilatore con una versione di piattaforma precedente, la pratica corretta è:

  • Utilizzare l'impostazione di risorsa precedente.
  • Impostare bootclasspath per la compilazione con rt.jar (o equivalente) per la piattaforma precedente.

Se il secondo passaggio non viene eseguito, javac utilizzerà diligentemente le regole del vecchio linguaggio combinate con le nuove librerie, il che può tradursi in file di classe che non funzionano sulla piattaforma precedente poiché possono essere inclusi riferimenti a metodi inesistenti.


11
Fantastico, anche se sembra più semplice usare un JDK più vecchio per compilare.
dhardy,

42

utilizzo bootclasspath

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

Sui sistemi UNIX, individuare rt.jar utilizzando:

locate -r '/rt.jar$'

Impostato in JAVA_HOMEmodo che rt.jarsi trovi in$JAVA_HOME/jre/lib/rt.jar , quindi:

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

Testato su Ubuntu 14.04 per Oracle Java 7 e 8.


4

Attualmente sto eseguendo Netbeans IDE 8.0.2 con JDK 1.8 su Linux Mint 17.1 che ha java -version = 1.7.0_65. Quindi per poter eseguire i file JAR ho dovuto impostare myProject> Proprietà> Formato sorgente / binario: JDK 7. Tuttavia durante la creazione (myProject> Clean and Build) ho ricevuto un avviso simile: avviso: [opzioni] percorso classe bootstrap non impostato insieme a -sorgente 1.7.

La soluzione era quella di aggiungere la piattaforma Linux Mint JDK1.7 all'elenco delle piattaforme Netbeans.

Questo può essere fatto andando su myProject> Proprietà> Librerie e facendo clic sul pulsante Gestisci piattaforme ... Quindi nella finestra Java Platform Manager fare clic su Aggiungi piattaforma ... e selezionare: Java Standard Edition, fare clic su Avanti e selezionare / usr / lib / jvm / java-7-openjdk-amd64 (o qualunque sia la posizione della versione di JDK 1.7 ). Il nome della piattaforma verrà impostato su JDK1.7. Basta fare clic su Fine e il gioco è fatto.

Ora puoi selezionare la piattaforma Java nelle proprietà del progetto. Selezionando JDK1.7 ed eseguendo Clean and Build: non più avvisi. :-)


1
"myProject> Proprietà> Formato sorgente / binario: JDK 7" ha funzionato per me
Doctor Parameter

2

L'avviso può essere disabilitato con una nuova sotto-opzione JDK 7 all'interno della famiglia -Xlint, -Xlint: -options. per esempio

$ javac -source 1.5 -Xlint: -options example.java

fonti: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

e

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#xlintwarnings

Avvertenze che possono essere abilitate o disabilitate con l'opzione -Xlint

Abilita il nome di avviso con l'opzione -Xlint: nome, dove nome è uno dei seguenti nomi di avviso. Allo stesso modo, puoi disabilitare il nome di avviso con l'opzione -Xlint: -name: ...

opzioni Avvisa di problemi relativi all'uso delle opzioni della riga di comando. Vedere Esempio di compilazione incrociata per un esempio di questo tipo di avviso.


38
Nota: non è una buona idea chiudere gli avvisi in questo modo
Alexander Malakhov

9
concordato, ma a volte è meglio disabilitare alcuni avvisi anziché emetterne centinaia in modo da nascondere i tuoi veri avvisi.
Neon,

3
Qualcuno può dare un esempio minimo di qualcosa che non va ignorando questo avviso?
Ciro Santilli 18 冠状 病 六四 事件 法轮功


2

Assicurati che la tua versione jdk e la versione sorgente del compilatore java siano le stesse. Ad esempio, se stai usando Maven e hai impostato il progetto usando JDK 9, seguire il pom snippet verrebbe visualizzato sopra

            <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 correzione della versione di origine / destinazione su 9 risolve l'avviso come di seguito

            <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>

1
Questo risolto un problema con cui stavo lottando da circa un'ora, non riuscivo a vederlo.
Rutendo,

-2
  1. Scarica JDK (su avviso versione scritta) -> installa

  2. Fare clic con il tasto destro del mouse sul progetto -> Proprietà -> Librerie -> Piattaforma Java (aggiungere il JDK installato) -> OK

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.