¿Cómo cambiar la versión de Java para Maven en IntelliJ?


82

Soy nuevo en Maven e IntelliJ IDEA.

Tengo un proyecto de Maven escrito en Java 8. Siempre que intento compilarlo (ventana Proyectos de Maven -> Ciclo de vida -> compilar -> Ejecutar compilación de Maven) obtengo una serie de errores de compilación:

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

¿Dónde se supone que debo cambiar el valor del parámetro -source? Intenté agregarlo como un parámetro adicional en Configuración -> Compilador -> Compilador de Java, pero obtuve los mismos resultados.

Los niveles de idioma del proyecto y del módulo se establecen en 8.0.

Estoy usando Maven 3.2.3 e IntelliJ IDEA Community Edition 13.1.2.


¿lo ha cambiado en un archivo pom?
— EIS

Mi enfoque fue configurarlos directamente en IntelliJ de esta manera: http://stackoverflow.com/a/37648709/5154418
— Yumi Koizumi

Respuestas:


117

O más fácil, agregue esto a la propertiessección de su pom :

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Esto no funciona en 2017.2.5 para mí, hasta que usé etiquetas <build / configuration>.
— Pawel Veselov

Ninguna de las configuraciones de IntelliJ hizo nada por mí. Esta respuesta es lo único que lo solucionó después de horas de búsqueda. ¡Gracias!
— Tim

12
Funciona bien, pero no olvide volver a importar el archivo pom.xml, haga clic derecho -> Maven -> Reimport
— David Lilljegren

¡Esto debe colocarse en el pom generado por start.spring.io ! No sé por qué no lo hacen. Lo que pusieron allí "<java.version> 1.8 </java.version>" es inútil.
— User007

1
Asegúrese de tener ya el SDK / JDK requerido en la Configuración de plataforma.
— gkephorus

34

Resumen:

  • 'maven-compiler-plugin' ¡ SIEMPRE funciona! Es lo que te sugiero que uses.

Para cambiar el nivel de idioma, utilice

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

¡Las propiedades no siempre cambian el nivel de idioma de Intellij!

En el siguiente código, 1.4 se configuró en el pom usando maven-compiler-plugin
(el jdk de Intellij es 1.8) y el nivel de idioma del proyecto se cambió en consecuencia a 1.4:

ingrese la descripción de la imagen aquí

¡Fue revisado dos veces! Es un ejemplo. La mayoría de las veces, no degradará la versión del JDK a 1.4.

Por supuesto, si usa propiedades, digamos que coloca el pom 1.8, luego, si usa un JDK 1.8 en Intellij (el nivel de idioma predeterminado es 1.8 o el idioma predeterminado se cambió manualmente), entonces podrá codificar en 1.8 PERO en la compilación de mvn, las propiedades NO se verán y usará Maven 1.5 y la compilación NO tendrá éxito.


Por cierto y creo que esto creó la confusión, Eclipse admite maven.compiler.source y maven.compiler.target.
— Rudy Vissers

Actualicé el archivo pom, pero también necesitaba cambiar esto en la Configuración del proyecto para que funcione.
— gloomy.penguin

@ gloomy.penguin: Acabo de crear un nuevo proyecto Idea a partir del arquetipo de inicio rápido de Maven. Luego miré Configuración del proyecto ---> Módulos y leí 5.0 - palabra clave 'enum', genérico, autoboxing, etc. Luego agregué la fuente (1.6) y el destino (1.6) de maven-compiler-plugin e hice exactamente el mismo y leí 6- @ Override en interfaces. Creo que hay confusión. NO QUEREMOS CAMBIAR EL SDK POR DEFECTO. No hay nada que podamos hacer al respecto.
— Rudy Vissers

@gloomy: penguin: Si JDK 1.5 está configurado de forma predeterminada y cambia la configuración en el pom para preguntar 1.6, Idea no cambiará el SDK predeterminado a 1.6 o 1.7 o 1.8 incluso si ha agregado estos jdks a Intellij. La configuración en el pom le pide a Idea que cambie la versión de origen y destino usando el sdk predeterminado. En el ejemplo de la imagen se preguntó 1.4 y el jdk predeterminado es 1.8 y, por supuesto, está bien. Debe configurar un jdk predeterminado que sea compatible con las versiones que configuró en pom.
— Rudy Vissers

@ gloomy-penguin: Entonces 1.8 admitirá todas las configuraciones (¡¡¡pero no 9 !!!). Espero eso ayude. Repito que acabo de comprobar y funciona. Y verifique el resultado en Configuración del proyecto ---> Módulos.
— Rudy Vissers

7

Cambie la fuente como se muestra a continuación en pom.xml

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

5

No creo que ninguna respuesta a la pregunta aborde la preocupación: " ... en IntelliJ ".

Estos son los pasos:

  • Vaya a Preferencias en IntelliJ (o Acceso directo ⌘ +,)
  • Compilación, ejecución, implementación> Maven> Importador : seleccione el menú desplegable " JDK para importador ", luego seleccione su versión de Java preferida, haga clic en Aplicar
  • Generar, ejecución, implantación> Maven> Runner - seleccione la opción " JRE desplegable" seleccione su versión de Java preferido, Haga clic en Aplicar
  • Haga clic en Aceptar

4

Agregar las siguientes líneas a la raíz (nivel de proyecto) pom.xml me funcionó para resolver el problema anterior: (ambas opciones funcionaron para mí)

Opción 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Opcion 2:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

publicado originalmente en: IntelliJ IDEA 13 usa Java 1.5 a pesar de estar configurado en 1.7


1

Hay dos formas de hacer esto:

Primero: agregar propiedades

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

segundo- Agregar complemento

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>

0

Debe agregar el siguiente código en su pom.xml para forzar el cambio de nivel de idioma

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

ahora intelliJ 2019.3 CE hace esto por usted si va a importar y luego alt + enter donde obtendrá una opción que dice "cambiar el nivel de idioma a 8 para usar esta funcionalidad"


0

abra la terminal de ubuntu, vaya a su directorio raíz y escriba:

export JAVA_HOME = <path to jdk>

por ejemplo, me funciona bien {haz lo mismo en la terminal IntelliJ}.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

para comprobar el tipo de valor establecido echo $JAVA_HOME

para comprobar el tipo de versión de maven: mvn -version

puede encontrar todas las rutas de los JDK escribiendo este comando y puede configurar la versión de JDK.

sudo update-alternatives --config java

también compruebe que tiene el mismo java -versiony javac -version.

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.