advertencia: [ruta de clase bootstrap de opciones] no establecida junto con -source 1.5

138

¡Recibo el mensaje de advertencia en tiempo de compilación!

advertencia: [ruta de clase bootstrap de opciones] no establecida junto con -source 1.5

¿Cómo puedo arreglarlo?

Sam
fuente
1
Foros de NetBeans: forums.netbeans.org/topic43819.html
Alex K
consulte stackoverflow.com/questions/9164625/… para obtener una solución en caso de que esté utilizando maven
hoijui
44
Esto me causó un dolor de cabeza al usar String.join de Java 8 en una compilación de Maven con la fuente y el destino establecidos en 7. Utilicé la regla requireJavaVersion de maven-enforcer-plugin para imponer el rango <version>[1.7.0,1.7.0-79]</version>que al menos rompe la compilación con un mensaje claro en lugar de un prueba con mensaje oscuro.
Earcam

Respuestas:

102

De una publicación de blog :

Para usar javac de JDK N para compilar en forma cruzada a una versión de plataforma anterior, la práctica correcta es:

  • Utilice la configuración de fuente anterior.
  • Establezca bootclasspath para compilar contra rt.jar (o equivalente) para la plataforma más antigua.

Si no se da el segundo paso, javac usará las reglas del lenguaje antiguo combinadas con las nuevas bibliotecas, lo que puede dar como resultado archivos de clase que no funcionan en la plataforma anterior, ya que pueden incluirse referencias a métodos inexistentes.

Eduard Wirch
fuente
11
Genial, aunque parece más fácil usar un JDK anterior para compilar.
dhardy
42

uso de bootclasspath

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

En sistemas UNIX, ubique rt.jarusando:

locate -r '/rt.jar$'

Establezca de JAVA_HOMEmodo que rt.jaresté ubicado en $JAVA_HOME/jre/lib/rt.jar, luego:

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

Probado en Ubuntu 14.04 para Oracle Java 7 y 8.

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

Actualmente estoy ejecutando Netbeans IDE 8.0.2 con JDK 1.8 en Linux Mint 17.1 que tiene java -version = 1.7.0_65. Entonces, para poder ejecutar archivos JAR, tuve que configurar myProject> Propiedades> Fuente / Formato binario: JDK 7. Sin embargo, al compilar (myProject> Clean and Build) recibí una advertencia similar: advertencia: [opciones] ruta de clase bootstrap no establecida en conjunción con -source 1.7.

La solución fue agregar la plataforma Linux Mint JDK1.7 a la lista de plataformas Netbeans.

Esto se puede hacer yendo a myProject> Propiedades> Bibliotecas y haciendo clic en el botón Administrar plataformas ... Luego, en la ventana Java Platform Manager, haga clic en Agregar plataforma ... y seleccione: Java Standard Edition, haga clic en Siguiente y vaya a / usr / lib / jvm / java-7-openjdk-amd64 (o cualquiera que sea la ubicación de la versión JDK 1.7 ) El nombre de la plataforma se establecerá en JDK1.7. Simplemente haga clic en Finalizar y listo.

Ahora puede seleccionar la plataforma Java en las propiedades del proyecto. Al seleccionar JDK1.7 y ejecutar Clean and Build: no más advertencias. :-)

n9dyfi
fuente
1
"myProject> Properties> Source / Binary Format: JDK 7" funcionó para mí
Doctor Parameter
2

La advertencia se puede deshabilitar con una nueva subopción JDK 7 dentro de la familia -Xlint, -Xlint: -options. p.ej

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

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

y

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

Advertencias que se pueden habilitar o deshabilitar con la opción -Xlint

Habilite el nombre de advertencia con la opción -Xlint: nombre, donde nombre es uno de los siguientes nombres de advertencia. Del mismo modo, puede deshabilitar el nombre de advertencia con la opción -Xlint: -name: ...

opciones Advierte sobre problemas relacionados con el uso de opciones de línea de comandos. Consulte el Ejemplo de compilación cruzada para ver un ejemplo de este tipo de advertencia.

Neón
fuente
38
Tenga en cuenta que no es una buena idea simplemente callar advertencias como esta
Alexander Malakhov
9
de acuerdo, pero a veces es mejor deshabilitar algunas advertencias en lugar de generar cientos de ellas para que sus verdaderas advertencias estén ocultas.
Neon
3
¿Puede alguien dar un ejemplo mínimo de algo que sale mal al ignorar esta advertencia?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
1
Ver comentario anterior
real_paul
2

Asegúrese de que su versión jdk y la versión fuente del compilador de Java sean las mismas. Por ejemplo, si está utilizando Maven, y ha configurado el proyecto utilizando JDK 9, entonces seguir el fragmento de pom a través de la advertencia anterior

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

Corregir la versión de origen / destino a 9 corrige la advertencia de la siguiente manera

            <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
fuente
1
Esto solucionó un problema con el que estaba luchando durante aproximadamente una hora, simplemente no podía verlo.
Rutendo
-2
  1. Descargar JDK (en versión escrita de advertencia) -> instalar

  2. Haga clic derecho en su proyecto -> Propiedades -> Bibliotecas -> Plataforma Java (agregue su JDK instalado) -> Aceptar

Erasyl Abenov
fuente