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


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>

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


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

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>();

¡Muchas gracias, esto me ayudó!
— Farb

14

Hay otra forma de gradle:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

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

3

En CMD, escriba:

javac -Xlint:unchecked MyGui2.java

mostrará la lista de operaciones no seleccionadas o inseguras.


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.


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

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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.