¿Cómo compilo con -Xlint: sin marcar?

84

Recibo un mensaje cuando compilo mi código:

Note: H:\Project2\MyGui2.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

¿Cómo recompilo con -Xlint:unchecked?

Dave Fisher
fuente
1
¿Está compilando en la línea de comandos? Si es así, agregue -Xlint:uncheckeda la línea de comando que está ejecutando, tal como lo indica el mensaje.
101100
depende de cómo ejecutes tu código ... ¿es de eclipse? ¿línea de comando?
Boaz
¿Qué hiciste? Nunca he visto este mensaje de error ...
AlexR

Respuestas:

54

Especifíquelo en la línea de comando para javac:

javac -Xlint: sin marcar

O si está utilizando Ant, modifique su objetivo javac

  <javac ...>
    <compilerarg value="-Xlint"/>
  </javac> 

Si está utilizando Maven, configúrelo en el maven-compiler-plugin

<compilerArgument>-Xlint:unchecked</compilerArgument>
sudocode
fuente
He maven 3, modelo 4.0 - El <compilerArgument>pasa por debajo <configuration>, no dentro de la `<compilerArguments>' elemento. Tonto de mí.
será el
¿Y qué hay de la compilación dentro de AOSP? ¿Qué debo agregar al archivo Android.mk?
Dr.jacky
48

Para IntelliJ 13.1 , vaya a File-> Settings-> Project Settings-> Compiler-> Java Compiler, y en el lado derecho, para Additional command line parametersingresar "-Xlint:unchecked".

Brian Burns
fuente
Gracias. Pero para 13.1 Community Edition está en Archivo - Configuración - Compilador - Compilador de Java, y el campo está en la parte inferior.
RenniePet
7
Para 14.0.3, esta página de configuración se ha movido a: Archivo - Configuración - Generación, ejecución, implementación - Compilador - Compilador de Java.
Csauve el
1
No en AndroidStudio, las opciones de compilador parecen estar disponibles para cualquier compilador, no solo para Java. La edición de build.gradle funciona.
Alex Cohn
En Android Studio, las opciones del compilador se pueden encontrar en Archivo -> Configuración de nuevo proyecto -> Configuración para nuevos proyectos . Sin embargo, parecen no ser aplicables a un proyecto existente.
JJD
26

En el proyecto gradle, puede agregar este parámetro de compilación de la siguiente manera:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked"
    }
}
xianlinbox
fuente
4
En versiones recientes de Gradle, el tipo de tarea Compileha cambiado de nombre JavaCompile, por lo que estasks.withType(JavaCompile) { ... }
obecker
1
Yo agregaría que esto debería entrarallprojects { // ... }
Borzh
21

Sé que suena extraño, pero estoy bastante seguro de que este es tu problema:

En algún lugar de MyGui.java estás usando una colección genérica sin especificar el tipo. Por ejemplo, si está utilizando una ArrayList en algún lugar, está haciendo esto:

List list = new ArrayList();

Cuándo deberías hacer esto:

List<String> list = new ArrayList<String>();
Andrew Rasmussen
fuente
¡Muchas gracias, esto me ayudó!
Farb
14

Hay otra forma de gradle:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
tarn
fuente
Esto no afectará las pruebas, por ejemplo.
Trilarion
2
Para Android Studio, esto parece requerir un enfoque un poco diferente:tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
Alex Cohn
3
para Android Studio 2.1.3 agregue esto al proyecto build.gradle allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
tarn
4

Para Android Studio, agregue lo siguiente a su build.gradlearchivo de nivel superior dentro del allprojectsbloque

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
}
Girando
fuente
3

En CMD, escriba:

javac -Xlint:unchecked MyGui2.java

mostrará la lista de operaciones no seleccionadas o inseguras.

Himanshu Aggarwal
fuente
3

Si trabaja con un IDE como NetBeans, puede especificar la Xlint:unchecked opción del compilador en las propiedades de su proyecto.

Simplemente vaya a la ventana de proyectos, haga clic derecho en el proyecto y luego haga clic en Properties.

En la ventana que aparece busque la Compilingcategoría y en el cuadro de texto etiquetado Additional Compiler Optionsconfigure la Xlint:uncheckedopción.

Por lo tanto, la configuración permanecerá establecida cada vez que compile el proyecto.

Josué
fuente
2

A continuación, se muestra una forma más limpia de especificar los argumentos del compilador de Gradle:

compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']
Jim H
fuente
Esto puede ser más corto pero no más limpio . Por un lado, anula las opciones existentes establecidas en otros lugares. Por otro lado, no funcionará y afectará la prueba, como se indica en los comentarios debajo de la respuesta de tarn. No hagas esto, usa la respuesta de xianlinbox en su lugar.
Konrad Rudolph
1

otra forma de compilar usando -Xlint: sin marcar a través de la línea de comando

javac abc.java -Xlint:unchecked

mostrará las advertencias inseguras y sin marcar.

Deepak Jaiswal
fuente
0

Para su información, el acceso a esta configuración ha cambiado para IntelliJ 15, ¡nuevo y mejorado para un entierro aún más profundo!

Ahora es: Archivo> Otras configuraciones> Configuración predeterminada> 'Compilación, ejecución, implementación'> Compilador> Compilador de Java

Y en Parámetros adicionales de la línea de comandos, igual que antes, escriba "-Xlint: unchecked".

HAKitz
fuente