इंटेलीज - नए जावा 8 वर्गों का उपयोग करने में असमर्थ - त्रुटि: "एपीआई का उपयोग @since 1.6+ के रूप में प्रलेखित है।"


168

मैं java.lang.function.Functionअपने जावा 8 कोड बेस में एक का उपयोग करने की कोशिश कर रहा हूं , लेकिन मैं इंटेलीज में निम्नलिखित त्रुटि प्राप्त कर रहा हूं ।

एपीआई का उपयोग @since 1.6+ के रूप में प्रलेखित है। इस निरीक्षण से उन सभी तरीकों का पता चलता है जिनके दस्तावेज में @since टैग है। यह तब उपयोगी हो सकता है जब उत्पादन के लिए लक्ष्य प्लेटफॉर्म के रूप में नए एसडीके संस्करण के तहत विकास किया जाता है

मुझे लगता है कि सही प्रोजेक्ट और कंपाइलर सेटिंग्स हैं

परियोजना सेटिंग्स: (फ़ाइल -> परियोजना संरचना)

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

बास्टियन जानसन टिप्पणी पर आधारित उत्तर का संपादन किया।

ऐसा लगता है कि संकलक स्तर को प्रभावित करने वाली एक अन्य परियोजना है। इस समस्या का एक सूक्ष्म संकेत यह है कि जब आपका कंपाइलर स्रोत की शिकायत करना शुरू कर दे और जावा संस्करण आपके द्वारा निर्दिष्ट कोड से अलग होने के कारण अलग हो जाए।

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टैब में) का उपयोग करने के लिए प्रत्येक मॉड्यूल को कॉन्फ़िगर करना चाहिए ।
बस्तिन जानसन

@BastienJansen धन्यवाद। आपकी टिप्पणियों के आधार पर उत्तर संपादित किया!
नेरवे

7
Project Settingsमें पाया जाता हैFile -> Project Structure
कार्ल

6
इतने सारे स्थानों पर इसे स्थापित करने की आवश्यकता क्यों है। धन्यवाद।
रिचर्ड रैस्ट

1
यदि आप मावेन का उपयोग कर रहे हैं तो यह प्रोजेक्ट सेटिंग तब ओवरराइट हो जाती है जब आप पुनः आयात करते हैं। ऐसा हर बार होता है जब आप पोम बदलते हैं, और जल्दी से आपको अपनी इंटेलीज सेटिंग्स को अपडेट रखने के लिए निराश करेंगे। मावेन परियोजनाओं के लिए, नीचे के पोम परिवर्तन अधिक उपयुक्त हैं।
Jay

51

यदि आप मावेन का उपयोग कर रहे हैं तो अपनी कॉन्फ़िगरेशन pom.xml फ़ाइल में नीचे की रेखा जोड़ें और फिर मावेन से फिर से तैयार करें या इसका निर्माण करें।

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

वरना चयन जावा संकलक और पथ के नीचे से भाषा स्तर।

फ़ाइल> प्रोजेक्ट संरचना> प्रोजेक्ट सेटिंग्स> मॉड्यूल> आपका मॉड्यूल नाम> स्रोत> भाषा स्तर> वह चुनें जो आपको चाहिए।

यहां छवि विवरण दर्ज करें

भाषा स्तर यहां से बदलें: -

यहां छवि विवरण दर्ज करें


1
इस के लिए बहुत बहुत धन्यवाद। पता नहीं क्यों यह डिफ़ॉल्ट नहीं है। 2019.1.3 में भी जो मैं उपयोग कर रहा हूं।
eodeluga

33

दरअसल, यदि आप मावेन का उपयोग कर रहे हैं और आपकी 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जो कि सबसे नीचे है।

चित्र दिखाता है कि प्रोजेक्ट राइट क्लिक मेनू में मावेन अंतिम आइटम से दूसरे स्थान पर है


25

मैंने इसे इस प्रकार तय किया है:

प्रोजेक्ट पर राइट क्लिक करें -> मॉड्यूल सेटिंग्स खोलें -> मॉड्यूल -> स्रोत -> 8 या उच्चतर

यहां छवि विवरण दर्ज करें

और तब

यहां छवि विवरण दर्ज करें

यदि अभी भी त्रुटि हुई है और मावेन का उपयोग करते हुए , आपको अपने में बिल्ड कॉन्फ़िगरेशन जोड़ना होगा 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

फ़ाइल> सेटिंग्स> निर्माण, निष्पादन, तैनाती> जावा कंपाइलर

आप जिस मॉड्यूल के लिए काम कर रहे हैं, उसके लिए टारगेट बायटेकोड संस्करण को 1.8 में बदलें।

यदि आप मावेन का उपयोग कर रहे हैं

शीर्ष-स्तरीय प्रोजेक्ट नोड के तहत 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

यदि आप ग्रेडल का उपयोग कर रहे हैं, तो यह सुनिश्चित करने के लिए मत भूलें कि निम्नलिखित 1.8 पर सेट है और 1.5 नहीं है। संगतता स्तर, यह सेटिंग जावा 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

एक और जगह है जो इस मुद्दे का कारण बन सकती है, भले ही आप मावेन या ग्रैडल का उपयोग कर रहे हों या नहीं।

में 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: 7 , तो IDEA अभी भी एक फिट फेंक देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.