2012-08-02 31 views
10

Mi código compila bien en Eclipse, pero cuando intento compilar desde la línea de comandos (a través de nuestro sistema Buildr a base de rubí), me sale este mensaje de error:importación estática sólo de clases e interfaces

static import only from classes and interfaces 

Sugiriendo que la importación estática de campos estáticos públicos no está permitida. ¿Qué debo buscar para ayudar a diagnosticar este problema? ¿Cómo puedo arreglarlo?

Actualización: por @ petición de Ted, la declaración constante en el archivo de referencia:

public static final String NULL = "<NULL>"; 

y la referencia (expurgada) en el archivo de referencia:

import static my.path.MyClass.NULL; 
+2

Publique el código que genera este mensaje, tanto el extracto de importación como los campos que se importan. –

Respuesta

7

Mi conjetura es que Eclipse y buildr están usando versiones de compilador de Java diferentes o diferentes indicadores de compilación. Hay un error en el compilador de Java 7 (bug ID: 715906) que genera este error cuando se importan campos específicos de forma estática. La solución alternativa es usar una importación estática comodín. Así que en lugar de:

import static package.Class.staticField; 

hacer esto:

import static package.Class.*; 
6

respuesta tardía pero acabo de recibir un problema similar y lo descubrí. Voy a publicar en caso de que ayude a alguien más que encuentre esta página ...

Recibí un error similar cuando, después de una gran combinación y refactor, puse accidentalmente una clase de prueba en src/main/java en lugar de src/prueba/java. Como la dependencia JUnit era scope = tests, no funcionó en maven puro. Tal vez tenga el mismo problema

Cuestiones relacionadas