IntelliJ에서 Maven 용 Java 버전을 변경하는 방법은 무엇입니까?


82

저는 Maven과 IntelliJ IDEA를 처음 사용합니다.

Java 8로 작성된 Maven 프로젝트가 있습니다. 빌드하려고 할 때마다 (Maven 프로젝트 창-> 라이프 사이클-> 컴파일-> Maven 빌드 실행) 일련의 컴파일 오류가 발생합니다.

[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)

-source 매개 변수의 값을 어디에서 변경해야합니까? 설정-> 컴파일러-> Java 컴파일러에서 추가 매개 변수로 추가하려고했지만 동일한 결과를 얻었습니다.

프로젝트 및 모듈의 언어 수준은 모두 8.0으로 설정됩니다.

Maven 3.2.3 및 IntelliJ IDEA Community Edition 13.1.2를 사용하고 있습니다.


pom 파일에서 변경 했습니까?
eis

: 내 접근 방식 인 IntelliJ에서 직접이 방법을 설정했다 http://stackoverflow.com/a/37648709/5154418
유미 고이즈미

답변:


117

또는 더 쉽게 다음을 pom의 properties섹션에 추가 하십시오.

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

이것은 <build / configuration> 태그를 사용할 때까지 2017.2.5에서 작동하지 않습니다.
Pawel Veselov

IntelliJ 설정 중 어느 것도 나를 위해 아무것도하지 않았습니다. 이 답변은 몇 시간 동안 검색 한 후에 수정 한 유일한 것입니다. 감사!
Tim

12
잘 작동하지만, 다시 수입에 pom.xml 파일을 마우스 오른쪽 클릭을 잊지 마세요 -> 메이븐 -> 다시 가져 오기
데이비드 Lilljegren

이것은 start.spring.io에 의해 생성 된 pom에 넣어야합니다 ! 나는 그들이 그것을하지 않는 이유를 모른다. 그들이 거기에 넣은 "<java.version> 1.8 </java.version>"은 쓸모가 없습니다.
User007

1
플랫폼 설정에 필요한 SDK / JDK가 이미 있는지 확인하십시오.
gkephorus

34

요약:

  • 'maven-compiler-plugin'은 항상 작동합니다! 내가 사용하는 것이 좋습니다.

언어 수준을 변경하려면 다음을 사용하십시오.

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

속성이 Intellij의 언어 수준을 항상 변경하는 것은 아닙니다 !

아래 코드에서 1.4는 maven-compiler-plugin을 사용하여 pom에 구성되었으며
(Intellij의 jdk는 1.8 임) 프로젝트의 언어 수준이 이에 따라 1.4로 변경되었습니다.

여기에 이미지 설명 입력

두 번 확인되었습니다! 예입니다. 대부분의 경우 JDK 버전을 1.4로 다운 그레이드하지 않습니다!

물론 속성을 사용하는 경우 pom 1.8을 입력하고 Intellij에서 1.8 JDK를 사용하면 (언어 수준 기본값은 1.8이거나 언어 기본값이 수동으로 변경됨) 1.8로 코딩 할 수 있습니다. 그러나 mvn 컴파일에서 속성이 표시되지 않고 Maven 1.5로 기본 설정되고 컴파일이 성공하지 않습니다!


Btw와 이것이 혼란을 야기했다고 생각합니다. Eclipse 는 maven.compiler.source 및 maven.compiler.target을 지원합니다.
루디 Vissers

pom 파일을 업데이트했지만 프로젝트 설정에서도이 파일을 wokr로 변경해야했습니다.
gloomy.penguin

@ gloomy.penguin : Maven Quickstart 아키 타입에서 새로운 아이디어 프로젝트를 만들었습니다. 그런 다음 Project Settings ---> Modules를 살펴보고 5.0- 'enum'키워드, generic, autoboxing 등을 읽었습니다. 그런 다음 maven-compiler-plugin에서 소스 (1.6) 및 대상 (1.6)을 추가하고 정확히 수행했습니다. 동일하고 인터페이스에서 6- @ Override를 읽었습니다. 혼란이 있다고 생각합니다. DEFAULT SDK를 변경하고 싶지 않습니다. 그것에 대해 우리가 할 수있는 일은 없습니다.
Rudy Vissers

@gloomy : penguin : JDK 1.5가 기본적으로 구성되어 있고 pom의 구성을 1.6을 요청하도록 변경하면 이러한 jdk를 Intellij에 추가 했더라도 Idea는 기본 SDK를 1.6 또는 1.7 또는 1.8로 변경하지 않습니다. pom의 구성은 Idea에게 기본 sdk를 사용하여 소스 및 대상 버전을 변경하도록 요청합니다! 그림 1.4의 예제에서 기본 jdk는 1.8이며 물론 괜찮습니다. pom에 구성한 버전과 호환되는 기본 jdk를 설정해야합니다.
Rudy Vissers

@ gloomy-penguin : 그래서 1.8은 모든 구성을 지원합니다 (그러나 9 !!!). 도움이 되었기를 바랍니다. 나는 방금 확인하고 작동합니다. 그리고 프로젝트 설정 ---> 모듈에서 결과를 확인하십시오.
Rudy Vissers

7

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

나는 질문에 대한 어떠한 응답도 " IntelliJ에서 "라는 우려를 해결했다고 생각하지 않습니다 .

단계는 다음과 같습니다.-

  • IntelliJ의 기본 설정 (또는 바로 가기 ⌘ +,)으로 이동합니다.
  • Build, Execution, Deployment> Maven> Importer- " JDK for Importer "드롭 다운을 선택한 다음 원하는 Java 버전을 선택하고 적용을 클릭합니다.
  • Build, Execution, Deployment> Maven> Runner- " JRE "드롭 다운을 선택한 다음 원하는 Java 버전을 선택하고 적용을 클릭합니다.
  • 확인 클릭

4

루트 (프로젝트 수준) pom.xml에 아래 줄을 추가하면 위의 문제를 해결하는 데 도움이되었습니다. (두 옵션 모두 나를 위해 일했습니다)

옵션 1:

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

옵션 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>

원래 게시 된 위치 : IntelliJ IDEA 13은 1.7로 설정해도 Java 1.5를 사용합니다.


1

이를 수행하는 두 가지 방법이 있습니다.

먼저 속성 추가

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

두 번째-플러그인 추가

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

0

언어 수준을 강제로 변경하려면 pom.xml에 아래 코드를 추가해야합니다.

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

이제 intelliJ 2019.3 CE에서 가져 오기로 이동 한 다음 alt + enter를 입력하면 "이 기능을 사용하려면 언어 수준을 8로 변경"이라는 옵션이 표시됩니다.


0

우분투 터미널을 열고 루트 디렉토리로 이동하고 다음을 입력하십시오.

export JAVA_HOME = <path to jdk>

예를 들어, {IntelliJ 터미널에서 동일하게 수행} 잘 작동합니다.

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

설정 값 유형 확인 echo $JAVA_HOME

maven 버전 유형을 확인하려면 : mvn -version

이 명령을 입력하여 JDK의 모든 경로를 찾을 수 있으며 JDK 버전을 설정할 수 있습니다.

sudo update-alternatives --config java

또한 동일한 java -versionjavac -version.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.