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