¿Qué causa que el proyecto Maven importado en Eclipse utilice Java 1.5 en lugar de Java 1.6 de manera predeterminada y cómo puedo asegurarme de que no lo haga?

Importé un proyecto Maven y usó Java 1.5 aunque tengo configurado 1.6 como mis Preferences->Java->Installed JREs predeterminadas de Preferences->Java->Installed JREs .

Cuando cambié el proyecto Maven para usar el 1.6 JRE, aún me quedaban los errores de comstackción cuando el proyecto usaba Java 1.5 (describí estos errores de comstackción anteriormente en: Tengo errores de comstackción con m2eclipse pero no con maven2 en la línea de comando – ¿está mi m2eclipse mal configurado? )

Voy a eliminar el proyecto y volver a intentarlo, pero quiero asegurarme de que esta vez utilice Java 1.6 desde el principio para ver si esto elimina los problemas de comstackción.

¿Cómo me aseguro de que el proyecto utilice Java 1.6 cuando lo importe?

El complemento m2eclipse no utiliza los valores predeterminados de Eclipse, el complemento m2eclipse deriva la configuración del POM. Por lo tanto, si desea que un proyecto de Maven se configure para utilizar la configuración de Java 1.6 cuando se importa en Eclipse, configure el maven-compiler-plugin adecuadamente, como ya he sugerido:

  org.apache.maven.plugins maven-compiler-plugin 2.1  1.6 1.6   

Si su proyecto ya se ha importado, actualice la configuración del proyecto ( haga clic con el botón derecho en el proyecto y luego en Maven V Update Project Configuration ).

      org.apache.maven.plugins maven-compiler-plugin 3.2  1.8 1.8      

Quería agregar algo a la respuesta ya provista. maven-compiler-plugin por defecto comstackrá su proyecto usando Java 1.5, que es donde m2e get es su información.

Es por eso que tienes que declarar explícitamente el plugin maven-compiler en tu proyecto con algo distinto a 1.5. Su pom.xml efectivo usará implícitamente el conjunto predeterminado en maven-compiler-plugin pom.xml .

Agregué esto a mi pom.xml debajo de la descripción del proyecto y funcionó:

  1.6 1.6  

Su JRE probablemente se definió en la configuración de ejecución. Siga estos pasos en Eclipse para cambiar el JRE de comstackción.

1) Haga clic con el botón derecho en el proyecto y seleccione Ejecutar como > Ejecutar configuraciones

2) Desde la ventana Ejecutar configuraciones, seleccione la configuración de comstackción de su proyecto en el panel izquierdo. A la derecha, verás varias tabs: Main, JRE, Refresh, Source, …

3) Haga clic en la pestaña JRE, debería ver algo como esto

enter image description here

4) De forma predeterminada, se utilizará JRE predeterminado de trabajo (el JRE que seleccione como predeterminado en Preferencias-> Java-> JRE instalados ). Si desea utilizar otro JRE instalado, marque la checkbox JRE alternativo y seleccione su JRE preferido del menú desplegable.

Aquí está la causa raíz de java 1.5:

También tenga en cuenta que actualmente la configuración de fuente predeterminada es 1.5 y la configuración de destino predeterminada es 1.5, independientemente del JDK con el que ejecute Maven. Si desea cambiar estos valores predeterminados, debe establecer el origen y el destino.

Referencia: Apache Mavem Compiler Plugin

Los siguientes son los detalles:

Plain pom.xml

    4.0.0 com.pluralsight spring_sample 1.0-SNAPSHOT  

El siguiente complemento se toma de una versión expandida de POM (POM efectivo),

Esto se puede obtener con este comando desde la línea de comando C:\mvn help:effective-pom Acabo de poner aquí un pequeño fragmento en lugar de todo un pom.

   maven-compiler-plugin 3.1   default-compile compile  compile    default-testCompile test-compile  testCompile     

Incluso aquí no ves dónde está definida la versión de Java, permite cavar más …

Descargue el complemento Apache Maven Compiler Plugin »3.1 como está disponible en el jar y ábralo en cualquier herramienta de compresión de archivos como 7-zip

Atraviesa el tarro y encuentra

plugin.xml

archivo dentro de la carpeta

maven-compiler-plugin-3.1.jar \ META-INF \ maven \

Ahora verá la siguiente sección en el archivo,

       ${maven.compiler.compilerId} ${maven.compiler.compilerReuseStrategy} ${maven.compiler.compilerVersion} ${maven.compiler.debug} ${maven.compiler.debuglevel} ${encoding} ${maven.compiler.executable} ${maven.compiler.failOnError} ${maven.compiler.forceJavacCompilerUse} ${maven.compiler.fork}  ${maven.compiler.maxmem} ${maven.compiler.meminitial} ${mojoExecution} ${maven.compiler.optimize}  ${maven.compiler.showDeprecation} ${maven.compiler.showWarnings} ${maven.test.skip} ${maven.compiler.skipMultiThreadWarning} ${maven.compiler.source} ${lastModGranularityMs} ${maven.compiler.target} ${maven.compiler.testSource} ${maven.compiler.testTarget} ${maven.compiler.useIncrementalComstacktion} ${maven.compiler.verbose}    

Mira el código de arriba y descubre las siguientes 2 líneas

  ${maven.compiler.source} ${maven.compiler.target} 

Buena suerte.

Configuración específica del proyecto

Un lugar más donde esto puede salir mal es en la configuración específica del proyecto, en Eclipse.

  1. propiedades del proyecto: haga clic en su proyecto y en uno de los siguientes:

    • Alt + Enter
    • Menú> Proyecto> Propiedades
    • haga clic derecho en su proyecto> propiedades del proyecto (último elemento en el menú)
  2. haga clic en “Comstackdor de Java”

  3. Desmarque “Habilitar configuración específica del proyecto” (o cámbielos todos a mano).

Debido a los requisitos del cliente, les permitimos mantener nuestros proyectos en 1.6. Cuando era necesario actualizar a 1.7, tuvimos un momento difícil porque necesitábamos cambiar la versión de Java por todos lados:

  • proyecto POM
  • Espacio de trabajo de Eclipse predeterminado
  • configuración específica del proyecto
  • ejecutar máquina virtual (se usó 1.6 para todo)

Una razón más posible si está utilizando Tycho y Maven para comstackr paquetes, tiene un entorno de ejecución incorrecto ( Bundle-RequiredExecutionEnvironment ) en el archivo de manifest.mf ( manifest.mf ) definido. Por ejemplo:

 Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Engine Plug-in Bundle-SymbolicName: com.foo.bar Bundle-Version: 4.6.5.qualifier Bundle-Activator: com.foo.bar.Activator Bundle-Vendor: Foobar Technologies Ltd. Require-Bundle: org.eclipse.core.runtime, org.jdom;bundle-version="1.0.0", org.apache.commons.codec;bundle-version="1.3.0", bcprov-ext;bundle-version="1.47.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.5 Export-Package: ... ... Import-Package: ... ... 

En mi caso, todo lo demás estaba bien. Los complementos del comstackdor (normal maven y tycho también) se configuraron correctamente, aún m2 generó un nivel de cumplimiento anterior debido al manifiesto. Pensé que comparto la experiencia.

Descubrí que mi problema era que alguien había cometido el archivo .project y .classpath que tenía referencias a Java 1.5 como JRE predeterminado.

      

Al cerrar el proyecto, eliminar los archivos y luego volver a importar como un proyecto de Maven, pude configurar correctamente el proyecto para usar el espacio de trabajo JRE o el jdk relevante sin que volviera a 1.5. Por lo tanto, evite verificar en su SVN los archivos .project y .classpath

Espero que esto ayude a otros.

La solución más simple en Springboot

Te daré la más simple si usas Springboot:

  1.8  

A continuación, haga clic con el botón derecho en su proyecto Eclipse: Maven> Actualizar proyecto> Actualizar configuración del proyecto desde pom.xml

Eso debería hacer.

    Intereting Posts