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.
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.
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. :-)
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.
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?
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
<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.Respuestas:
De una publicación de blog :
fuente
uso de bootclasspath
En sistemas UNIX, ubique
rt.jar
usando:Establezca de
JAVA_HOME
modo quert.jar
esté ubicado en$JAVA_HOME/jre/lib/rt.jar
, luego:Probado en Ubuntu 14.04 para Oracle Java 7 y 8.
fuente
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. :-)
fuente
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.
fuente
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
Corregir la versión de origen / destino a 9 corrige la advertencia de la siguiente manera
fuente
Descargar JDK (en versión escrita de advertencia) -> instalar
Haga clic derecho en su proyecto -> Propiedades -> Bibliotecas -> Plataforma Java (agregue su JDK instalado) -> Aceptar
fuente