아이디어: javac: 소스 릴리스 1.7에는 타깃 릴리스 1.7이 필요합니다.
JUnit 테스트를 실행할 때 IntelliJ IDEA를 사용하면
어떻게 수정하면 좋을까요?
- SDK 1.7 사용
- 모듈 언어 레벨은 1.7
Maven 빌드는 정상적으로 동작합니다.(그 때문에 IDEA 구성 문제에서 이 점을 믿고 있습니다)
대부분의 경우 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 Projects 툴 창에서 Maven 프로젝트를 다시 Import한 후 이 설정을 적용합니다.
인텔리J 15, 2016 및 2017
인텔리J 13 및 14에 대해 아래에 설명한 것과 비슷하지만 [설정] / [설정]패널에 추가 레벨이 있습니다.Settings > Build, Execution, Deployment > Compiler > Java Compiler 순으로 선택합니다.
IntelliJ 13 및 14
IntelliJ 13 및 14에서는 [설정(Settings)]> [ 컴파일러(Compiler)]> [ Java 컴파일러 UI ]를 체크하여 모듈의 다른 바이트 코드 버전을 대상으로 하고 있지 않은지 확인합니다.
IntelliJ IDEA 14.1에서는 "타깃 바이트 코드 버전"이 다른 위치에 있습니다.
다음과 같은 변경이 작용했습니다.
[파일] > [설정]... > 빌드, 실행, 전개 > 컴파일러 > Java 컴파일러 : 타깃 바이트 코드 버전을 1.5에서 1.8로 변경합니다.
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>
이 문제를 해결했습니다.[ Project Settings ]> [ Modules ]> [ Dependencies ]탭을 클릭합니다.Module SDK가 1.6으로 아직 설정되어 있는 것을 알고 1.7로 변경했더니 동작했습니다.
설정> 컴파일러> 자바 컴파일러 (인텔리제 아이디어 12.1.3)에서 필요한 옵션 ('타깃 바이트 코드 버전')을 찾았습니다.
다음 경로에서 프로젝트의 컴파일러 설정 파일을 수정하고 'target'을 1.7로 변경하십시오.
/project/.idea/syslog.xml
<bytecodeTargetLevel>
<module name="project-name" target="1.7" />
</bytecodeTargetLevel>
필드를 공백으로 설정하여 해결했습니다.
Settings > Compiler > Java 컴파일러 > Project 바이트 코드 버전
Than IntelliJ는 JDK 기본 버전을 사용합니다.
저도 한순간 뚜렷한 이유 없이 이 오류가 발생했습니다.컴파일러/모듈 등의 설정을 모두 변경했습니다.하지만 결국 저는 Maven 프로젝트를 다시 Import하여 IntelliJ 프로젝트를 재현했고 문제는 해결되었습니다.이건 버그인 것 같아.
IntelliJ 12 129.961
IntelliJ IDEA 14에서 v14.1로 조금 업그레이드한 후에 이 기능을 알게 되었습니다.톱/부모 폼의 편집이 도움이 되어, 재 Import Maven(자동이 아닌 경우)을 클릭했습니다).
단, 모듈/집약/부모모듈을 우클릭하여 Maven-> Import하면 충분합니다.
나는 Bellow 방법을 해결했다.
파일 >> 프로젝트 구조 >> 프로젝트 >> 프로젝트 언어 수준 --> 적절한 버전 설정 (예: 1.5)
.idea/misc.xml을 확인하십시오. languageLevel="수동으로 JDK_1_X" 속성
Gradle 프로젝트인 경우 build.gradle 파일에서 다음 설정을 검색합니다.
sourceCompatibility = "xx"
targetCompatibility = "xx"
모든 서브젝트에 대해 root build.gradle 파일에 다음과 같이 입력할 수 있습니다.
subprojects { project ->
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
[ Idea ]> [ Settings ]에서 언어 레벨을 수동으로 설정할 수 있습니다만, 그래들프로젝트인 경우, 그래들 설정(Idea 15+로 테스트 완료)에서 모듈 .iml 파일이 자동으로 동기화됩니다.그래들이 새로 고쳐지면 수동으로 변경한 내용이 모두 덮어쓰게 됩니다.
Gradle 매뉴얼에 따라 설정되지 않은 경우 현재 JVM 구성이 사용됩니다.
나는 이 오류에 맞닥뜨릴 다른 방법을 찾았다.디렉토리 구조를 재구성하고 있을 때 poom 중 하나가 javac을 설정하지 않은 오래된 부모를 가리키고 있는 경우(그 구성이 중간 수준으로 이동되었기 때문에).이 경우 최상위 레벨은 1.5로 기본 설정되며 동작하지 않는 하위 레벨의 pom이 이를 상속합니다.
따라서 이 오류가 발생했을 때 확인해야 할 또 다른 점은 POM 구조가 디렉토리 구조와 적절하게 일치하고 있다는 것입니다.
Maven 빌드가 정상적으로 동작하는 경우는, Maven 프로젝트와 IntelliJ IDEA 프로젝트의 구조를 동기화해 주세요.
[ Maven ]툴 창에서 [Refresh]버튼을 클릭합니다.이 버튼을 누르면 IntelliJ IDEA는 Maven 도구 창에서 프로젝트 구조를 해석합니다.
EAP 빌드를 사용하고 있는 경우는, Maven 동기 기능이 끊어지는 일이 있기 때문에, 이 방법은 도움이 되지 않는 경우가 있습니다.
이전 솔루션이 모두 작동하지 않는 경우(내 경우) 인텔리제 구성 파일을 삭제할 수 있습니다.
- project_directory/.idea/syslog.xml
- project_directory/.idea/encodings.xml
- project_directory/.idea/misc.xml
- project_directory/.idea/syslog.xml
- project_directory/.idea/syslog.xml
- project_directory/.idea/syslog.xml
- 기타.
인텔리지는 나중에 새로운 것을 재생성할 것이다.다만, 주의해 주세요.프로젯에서 작성된 모든 인텔리제 설정(디버깅모드 설정 등)도 삭제됩니다.
빌드 구성에서 Java 컴파일러 버전을 변경해야 합니다.
올바른 부문이 선택되었는지 확인합니다.[파일] > [File]
프로젝트를 선택하고 종속성 탭으로 이동합니다.드롭다운에서 오른쪽 종속성을 선택하거나 새로 만듭니다.
언급URL : https://stackoverflow.com/questions/12900373/idea-javac-source-release-1-7-requires-target-release-1-7
'sourcecode' 카테고리의 다른 글
"Java Date Format is not threadsafe" (자바 날짜 포맷은 스레드 세이프가 아닙니다)는 어떤 결과를 초래합니까? (0) | 2022.07.31 |
---|---|
'pow' 및 'floor'에 대한 참조가 정의되지 않았습니다. (0) | 2022.07.31 |
Java의 +=, -=, *=, /= 복합 할당 연산자가 캐스팅을 요구하지 않는 이유는 무엇입니까? (0) | 2022.07.31 |
vue 외부 기능, vue에 데이터 전달 (0) | 2022.07.31 |
Java에서 어레이를 세트로 변환하는 방법 (0) | 2022.07.30 |