ইন্টেলিজ - নতুন জাভা 8 টি ক্লাস ব্যবহার করতে অক্ষম - ত্রুটি: "এপিআই এর ব্যবহার @ সেন্স ১.6+ হিসাবে নথিভুক্ত হয়েছে"


168

আমি java.lang.function.Functionআমার জাভা 8 কোড বেসে একটি ব্যবহার করার চেষ্টা করছি , তবে আমি ইন্টেলিজে নিম্নলিখিত ত্রুটিটি পেয়ে যাচ্ছি।

এপিআই এর ব্যবহার @ সিস ১.6 হিসাবে নথিভুক্ত হয়েছে + এই পরিদর্শনটি এমন সমস্ত পদ্ধতির ব্যবহারের সন্ধান করে যা তাদের ডকুমেন্টেশনে @ সেন্স ট্যাগ রয়েছে। উত্পাদনের লক্ষ্য প্ল্যাটফর্ম হিসাবে নতুন এসডিকে সংস্করণে বিকাশ সঞ্চালিত হলে এটি কার্যকর হতে পারে

আমার কাছে সঠিক প্রকল্প এবং সংকলক সেটিংস রয়েছে বলে মনে হচ্ছে

প্রকল্পের সেটিংস: (ফাইল -> প্রকল্প কাঠামো)

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

এবং এটি পছন্দসই স্তরে অর্থাৎ ১.৮ বা প্রকল্প ডিফল্ট ভাষা স্তরে পরিবর্তন করুন


6
প্রকল্পের সেটিংসে Project defaultভাষা স্তর ( Sourcesট্যাবে) ব্যবহার করতে আপনার প্রতিটি মডিউল কনফিগার করা উচিত ।
বাসটিয়েন জানসেন

@ বাসটিয়ান জানসেন ধন্যবাদ। আপনার মন্তব্যের ভিত্তিতে উত্তরটি সম্পাদিত!
নার্ভ

7
Project SettingsFile -> Project Structure
কার্ল

6
কেন এত জায়গায় সেট করা দরকার তা আমার বাইরে। ধন্যবাদ।
রিচার্ড রাস্ট

1
আপনি মাভেন ব্যবহার করছেন যদি আপনি পুনরায় আমদানি করেন তখন এই প্রকল্পের সেটিংটি ওভাররাইট করা হয়। আপনি যখনই পম পরিবর্তন করেন তখনই এটি ঘটে থাকে এবং আপনার ইন্টেলিজ সেটিংসকে আপ টু ডেট রাখার কারণে আপনাকে হতাশ করবে। মাভেন প্রকল্পগুলির জন্য, নীচের পম পরিবর্তনগুলি আরও উপযুক্ত।
জয়

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 এও আমি ব্যবহার করছি।
ইডেলুগা

33

আসলে, আপনি যদি মাভেন ব্যবহার করছেন এবং আপনার pom.xmlপ্রকল্পের বৈশিষ্ট্যগুলি সঠিকভাবে কনফিগার করা হয়েছে

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

আপনি 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.5 কে নয় তা নিশ্চিত করতে ভুলবেন না (উদাহরণস্বরূপ ইন্টেলিজের কিছু উদ্ভট কারণে এটি 1.5 এ ডিফল্ট হয়েছে) তাই আপনি কম্পাইলার সেট করার জন্য প্রকল্প পর্যায়ে যা করেন তা নির্বিশেষে নয় no সামঞ্জস্যতা স্তর, এই সেটিংটি আপনাকে জাভা 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পরীক্ষাটি সেট করা আছে , আইডিইএ এখনও একটি উপযুক্ত হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.