2012-03-19 11 views
6

Recientemente me picó un poco de código por lo que es a través de nuestro ciclo de implementación sin lanzar ninguna errores de compilación cuando debería tener (en nuestra opinión) ...compilar en una versión - eclipse, experto

El código en cuestión es el uso el nuevo método estático Integer.compare que es desde Java 1.7.

El entorno del servidor se ejecuta en Java 1.6. Si bien nuestros entornos de desarrollo tienen instalado Java 1.7.

Nuestra suposición fue que al establecer las preferencias del proyecto para el cumplimiento de JavaSE-1.6 al menos nos daría advertencias de compilación en el código en cuestión, sin embargo, no hay advertencia o error visible en eclipse.

Proyecto> propiedades> compilador Java> Cumplimiento JDK> Uso cumplimiento del entorno de ejecución 'JavaSE-1.6' en el camino de construcción Java

segundo lugar de eso, utilizamos experto para compilar el despliegue final. El pom está claramente dirigido a cumplir con el compilador 1.6:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <optimize>true</optimize> 
    </configuration> 
</plugin> 

Sin embargo, la compilación maven se ejecuta correctamente con el código del problema.

¿Cómo puedo decir que tanto maven como eclipse fallan cuando el código no funciona en un Jvm anterior al que está siendo compilado?

Gracias, Paul.

+0

Recuerdo que me enfrenté a una situación similar antes (pero fue de 1.5 vs 1.6) pero en ese momento funciona como esperaba. Dudo si hay algún error en JDK causando eso? –

Respuesta

2

Usa el plugin maven animal sniffer para decirte cuando usas API que no son compatibles con versiones anteriores. También me dijeron que Java 1.7 tiene una función para esto, pero no tengo experiencia personal con eso.

+0

esto funciona muy bien, al menos puedo asegurarme de que el código incorrecto no llegue a la implementación. Gracias. – pstanton

2

Instale java 1.6 en el entorno de desarrollo, luego haga clic derecho en el proyecto en eclipse y vaya a Propiedades-> Ruta de compilación de Java. Vaya a la pestaña Bibliotecas y elimine el Java JRE 1.7, luego agregue el java 1.6 JRE.

No estoy lo suficientemente familiarizado con maven para contestar esa mitad.

+0

no hay forma sin instalar versiones antiguas de java? – pstanton

+0

Por lo que puedo decir, sí. O la forma que describí o la siguiente casilla en el menú de cumplimiento tiene un menú desplegable para el nivel de cumplimiento del compilador. Si selecciona un Java más antiguo para el cumplimiento del compilador, aparece un mensaje en la parte inferior que dice para asegurarse de que tiene instalado el jre de nivel. – Thomas

+0

sí lo noté pero esperaba evitar esto ya que tenemos algunos proyectos diferentes con diferentes requisitos ... – pstanton

Cuestiones relacionadas