아이디어 : javac : 소스 릴리스 1.7에는 대상 릴리스 1.7이 필요합니다


474

IntelliJ IDEA를 사용하여 JUnit 테스트를 실행할 때

여기에 이미지 설명을 입력하십시오

이 문제를 어떻게 해결할 수 있습니까?

  • SDK 1.7 사용
  • 모듈 언어 수준은 1.7입니다

메이븐 빌드는 잘 작동합니다. (이것이 IDEA 구성 문제에서 이것을 믿는 이유입니다)

답변:


689

Maven에서 가져온 잘못된 컴파일러 옵션이 여기에 있습니다.

컴파일러 옵션

또한 스크린 샷에 요약 된 프로젝트 및 모듈 바이트 코드 ( target ) 버전 설정을 확인하십시오.

소스 언어 레벨이 구성된 다른 장소 :

  • 프로젝트 구조 | 계획

계획

  • 프로젝트 구조 | 모듈 (모든 모듈 확인) | 출처

출처

Maven 기본 언어 수준1.5 (5.0)입니다. 위 스크린 샷에서이 버전을 모듈 언어 수준으로 볼 수 있습니다.

내부의 maven-compiler-plugin 구성을 사용하여 변경할 수 있습니다 pom.xml.

<project>
  [...]
  <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>
  [...]
</project>

또는

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

IntelliJ IDEA는 Maven 프로젝트 도구 창 에서 Maven 프로젝트 를 다시 가져온 후이 설정을 준수 합니다 .

다시 가져 오기


2
옳은. 이 설정은 프로젝트의 모든 모듈에 공통입니까, 아니면 특정 모듈에만 적용됩니까?
James Raitsev

1
이 설정은 프로젝트 당이며 모든 모듈에 영향을줍니다.
CrazyCoder

8
이 문제를 해결하고 적용 한 후 (예 : maven 변경 또는 무언가를 통해) 잘못된 값으로 되돌릴 이유가 있습니까?
Patrick

5
@Patrick, pom.xmlJava 컴파일러 플러그인 구성은 다음에 pom.xml을 변경하거나 (자동 다시 가져 오기가 활성화 된 경우) 프로젝트를 수동으로 다시 가져올 때이 설정을 무시할 Java 버전을 지정할 수 있습니다.
CrazyCoder

1
@CrazyCoder 나는 이것을 훨씬 일찍 한 번 변경 한 후 (pom에 대한 다른 들어오는 변경을 기다리고 있었음) pom.xml을 변경 했으므로 꽤 합리적인 설명처럼 들립니다. 감사합니다
Patrick

358

IntelliJ 15, 2016 및 2017

아래에서 IntelliJ 13 & 14에 대해 설명한 것과 비슷하지만 설정 / 기본 설정 패널에 추가 수준이 있습니다 : 설정 > 빌드, 실행, 배포 > 컴파일러 > Java 컴파일러 .

여기에 이미지 설명을 입력하십시오

IntelliJ 13 및 14

IntelliJ 13 및 14에서 설정> 컴파일러> Java 컴파일러 UI를 확인하여 모듈의 다른 바이트 코드 버전을 대상으로하지 않는지 확인하십시오.

여기에 이미지 설명을 입력하십시오


3
모듈을 삭제하고 자동으로 해결하도록했습니다 (jdk 기본값은 비워 두십시오)
Akin Okegbile

3
최신 아이디어 14.1을 위해 작동합니다.
Tushar

그래서 여기서 고침은 무엇입니까?
AlikElzin-kilaka

@ AlikElzin-kilaka, 목표 수준을 원하는 수준으로 설정하십시오.
Drew Noakes

누군가 모듈 설정이 아닌 전역 환경 설정 구성 화면에 특정 모듈 설정을 넣는 이유를 설명 할 수 있습니까 ??
MK.

61

에서 하게 IntelliJ IDEA 14.1 은 "대상 바이트 코드 버전"다른 위치에있다.

다음 변경 사항이 저에게 효과적이었습니다.

파일> 설정 ...> 빌드, 실행, 배포> 컴파일러> Java 컴파일러 : 대상 바이트 코드 버전 을 1.5에서 1.8로 변경

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


또는 jdk에서 결정할 수있을 때 비워 두는 것이 좋습니다!
Dragonborn

왜 maven과 다른 구성이 있습니까?
AlikElzin-kilaka

42

maven 3 및 JDK 7을 사용하는 경우 빌드 구성을 살펴 보았습니까?

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>

22

이 문제가 발생하여 수정은 프로젝트 설정> 모듈로 이동하여 특정 모듈> 종속성 탭을 클릭하는 것이 었습니다. 모듈 SDK가 여전히 1.6으로 설정되어 있고 1.7로 변경하여 작동했습니다.


나는 이것을 시도했다 ... 나는 개별 모듈을 삭제하고 자동 해결하도록 남겨 두어야했다.
Akin Okegbile

14

필자의 경우 설정> 컴파일러> Java 컴파일러 에서 필수 옵션 ( '대상 바이트 코드 버전')을 찾았습니다 (intelij idea 12.1.3)


10

다음 경로에서 프로젝트의 컴파일러 설정 파일을 수정하고 'target'을 1.7로 변경하십시오.

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>

고마워 이것은 나를 위해 일했다! 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 "모듈 '[앱 이름]'만들기"를 잊지 마십시오
Shehaaz

5

필드를 비워서 해결했습니다.

설정> 컴파일러> Java 컴파일러> 프로젝트 바이트 코드 버전

IntelliJ보다 JDK 기본 버전을 사용합니다.


4

한 순간에서 다른 순간으로 나는 명확한 이유 없이이 오류를 얻었습니다. 컴파일러 / 모듈 등의 모든 설정을 변경했지만 결국 Maven 프로젝트를 다시 가져 와서 IntelliJ 프로젝트를 다시 만들었고 문제가 해결되었습니다. 나는 이것이 버그라고 생각한다.

IntelliJ 12 129.961


IntelliJ 14.1.2와 동일합니다. 프로젝트를 다시 가져 와서 수정되었습니다.
srikanth

4

IntelliJ IDEA 14에서 v14.1로 약간 업그레이드 한 후에이 문제가 발생했습니다. 상단 / 부모 pom의 편집을 변경하고 도움이 된 다음 Maven 다시 가져 오기를 클릭했습니다 (자동이 아닌 경우).

그러나 모듈 / 집계 / 상위 모듈과 Maven-> Reimport를 마우스 오른쪽 버튼으로 클릭하면 충분합니다.


이것은 나를 위해 일했다! 나는 최상위 모듈과 자식 모듈을 위해 그것을했다
abelnation

2

벨로우즈 방법을 해결했습니다

파일 >> 프로젝트 구조 >> 프로젝트 >> 프로젝트 언어 수준-> 올바른 버전 설정 (예 : 1.5)


1

.idea / misc.xml 확인 때로는 languageLevel = "JDK_1_X"속성을 수동으로 변경해야합니다


1

Gradle 프로젝트 인 경우 build.gradle 파일에서 다음 설정을 검색하십시오.

sourceCompatibility = "xx"
targetCompatibility = "xx"

모든 하위 주제에 대해 루트 build.gradle 파일에 다음을 입력하십시오.

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Idea> Settings에서 언어 수준을 수동으로 설정할 수 있지만 Gradle 프로젝트 인 경우 Idea는 Gradle 설정 (Idea 15+에서 테스트)에서 모듈 .iml 파일을 자동으로 동기화합니다. 따라서 gradle을 새로 고치면 모든 수동 변경 사항이 무시됩니다.

를 기반으로 Gradle을 문서 이러한이 설정되지 않은 경우, 다음, 현재의 JVM 구성이 사용됩니다.


1

이 오류가 발생하는 다른 방법을 찾았습니다. 디렉토리 구조를 재구성하고 pom 중 하나가 더 이상 javac를 구성하지 않는 이전 부모를 가리키고 있습니다 (구성이 중간 레벨로 이동했기 때문에). 이 경우 최상위 수준의 기본값은 1.5이며 잘못된 하위 수준 pom이이를 상속합니다.

따라서이 오류가 표시되면 확인해야 할 또 다른 사항은 pom 구조가 디렉토리 구조와 올바르게 일치한다는 것입니다.


1

Maven 빌드가 제대로 작동하면 Maven 및 IntelliJ IDEA 프로젝트의 구조를 동기화하십시오.

에서 메이븐 도구 창 , 새로 고침 버튼을 클릭합니다 새롭게 하다. 이 버튼을 누르면 IntelliJ IDEA가 Maven 도구 창에서 프로젝트 구조를 구문 분석합니다.

Maven 동기화 기능이 때때로 중단 될 수 있으므로 EAP 빌드를 사용하는 경우에는 도움이되지 않을 수 있습니다.


0

올바른 depency가 선택되어 있는지 확인하십시오. 파일> 프로젝트 구조

프로젝트를 선택하고 종속성 탭으로 이동하십시오. 드롭 다운에서 올바른 종속성을 선택하거나 새로 작성하십시오.


0

이전의 모든 솔루션이 효과가 없다면 (내 경우) intellij 구성 파일을 삭제할 수 있습니다.

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / modules.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml
  • 기타

Intellij는 나중에 새로운 것을 다시 생성 할 것입니다. 그러나주의하십시오. 이렇게하면 projet에서 작성된 모든 인텔리전스 구성 (예 : 디버그 모드 구성, ...)도 삭제됩니다.


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