아이디어 : 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.