Intellij-최신 Java 8 클래스를 사용할 수 없음-오류 :“@since 1.6 이상으로 문서화 된 API 사용 ..”


168

java.lang.function.FunctionJava 8 코드베이스에서 를 사용하려고하는데 Intellij에서 다음과 같은 오류가 계속 발생합니다.

@since 1.6 이상으로 문서화 된 API 사용법이 검사는 문서에 @since 태그가있는 모든 메소드 사용법을 찾습니다. 새로운 SDK 버전에서 개발 대상 플랫폼으로 개발할 때 유용 할 수 있습니다.

프로젝트 및 컴파일러 설정이 올바른 것 같습니다

프로젝트 설정 : (파일-> 프로젝트 구조)

Project Settings -> Project -> Project SDK = Java 1.8
Project Settings -> Project -> Project Language Level = 8 - Lambdas, Type Annotations etc

컴파일러 설정 : (파일-> 설정)

Build, Execution, Deployment -> Compiler -> Java Compiler -> Project Bytecode Version : 1.8
Build, Execution, Deployment -> Compiler -> Java Compiler -> Per module Bytecode Version -> Target Bytecode Version : 1.8

무엇이 문제입니까?

답변:


365

Bastien Jansen 의견을 바탕으로 답변을 편집했습니다.

컴파일러 수준에 영향을주는 다른 프로젝트 설정이있는 것 같습니다. 이 문제의 미묘한 표시는 컴파일러가 소스를 불평하기 시작하고 코드를 컴파일하는 동안 지정한 Java 버전과 대상 Java 버전이 다르다는 것입니다

Warning:java: source value 1.5 is obsolete and will be removed in a future release
Warning:java: target value 1.5 is obsolete and will be removed in a future release
Warning:java: To suppress warnings about obsolete options, use -Xlint:-options.

이것을 없애려면 열어야합니다.

File -> Project Structure -> Project Settings -> Modules -> "Your Module Name" -> Sources -> Language Level

원하는 레벨 즉 1.8 또는 프로젝트 기본 언어 레벨로 변경하십시오.


6
프로젝트 설정에서 Project default언어 수준 ( Sources탭) 을 사용하도록 각 모듈을 구성해야합니다 .
Bastien Jansen 2016 년

@BastienJansen 감사합니다. 귀하의 의견을 바탕으로 답변을 수정했습니다!
Nerrve 2016 년

7
Project SettingsFile -> Project Structure
Karl

6
왜 이렇게 많은 곳에 설정해야합니까? 감사.
Richard Rast

1
Maven을 사용하는 경우 다시 가져 오기를 수행하면이 프로젝트 설정을 덮어 씁니다. 이것은 pom을 변경할 때마다 발생하며 intellij 설정을 최신 상태로 유지해야하는 경우에 매우 실망합니다. Maven 프로젝트의 경우 아래의 pom 변경 사항이 더 적합합니다.
Jay

51

maven을 사용하는 경우 구성 pom.xml 파일 에 아래 행을 추가 한 다음 maven에서 다시 가져 오거나 빌드하십시오.

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

그렇지 않으면 아래 경로에서 Java 컴파일러 및 언어 레벨을 선택하십시오.

파일> 프로젝트 구조> 프로젝트 설정> 모듈> 모듈 이름> 소스> 언어 레벨> 필요한 것을 선택하십시오.

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

여기에서 언어 레벨을 변경하십시오 :-

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


1
정말 감사합니다. 이것이 기본이 아닌 이유를 모릅니다. 내가 사용하는 2019.1.3에서도.
eodeluga

33

실제로 Maven을 사용 중이고 pom.xml프로젝트 속성이 올바르게 구성된 경우

<project xmlns="...> 
....
<properties>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project

Maven 매개 변수를 intellij-idea프로젝트로 다시 가져올 수 있습니다 . 프로젝트 루트 항목을 마우스 오른쪽 버튼으로 클릭 한 다음 Maven -> Reimport하단에 있습니다.

사진은 Maven이 프로젝트 오른쪽 클릭 메뉴의 마지막 항목에서 두 번째임을 나타냅니다.


25

방금 다음과 같이 수정했습니다.

프로젝트를 마우스 오른쪽 버튼으로 클릭-> 모듈 설정 열기-> 모듈-> 소스-> 8 이상

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

그리고

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

여전히 오류가 발생하고 maven을 사용 하는 경우 빌드 구성을 다음에 추가해야합니다 pom.xml.

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

4

파일> 설정> 빌드, 실행, 배포> Java 컴파일러

대상 바이트 코드 버전을 작업중인 모듈의 1.8로 변경하십시오.

Maven을 사용하는 경우

최상위 프로젝트 노드 아래의 pom.xml에 컴파일러 플러그인을 추가하십시오.

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


1

Gradle을 사용하는 경우 컴파일러를 설정하기 위해 프로젝트 수준에서 수행하는 작업에 관계없이 다음이 1.5가 아닌 1.8로 설정되어 있는지 확인하십시오 (예 : Intelij의 기이 한 이유로 기본값은 1.5로 설정 됨) 호환성 수준에서이 설정을 사용하면 인식하지 못하는 Java 8 기능에 계속 문제가 발생합니다.

version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'

sourceCompatibility = 1.8

1

리포지토리 구성에는 컴파일러 버전과 같은 속성이 있습니다. settings.xml파일을 검사 하십시오.

<jdk>1.8</jdk>
</activation>
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>

1

Maven 또는 Gradle을 사용하는지 여부에 관계 없이이 문제를 일으킬 수있는 다른 장소가 있습니다.

에서 Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level(믿습니다) 기본값은로 설정되어 Respecting to project language level settings있지만 프로젝트 설정을 무시하는 로 설정할 있습니다 Higher than:.

다른 답변의 지침을 따르고 프로젝트의 언어 수준을 8로 설정했지만 검사가로 설정되어 있으면 Higher than: 7IDEA는 여전히 적합합니다.

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