জাভা "ল্যাম্বডা এক্সপ্রেশন এই ভাষা স্তরে সমর্থিত নয়"


198

আমি জাভা 8 এর কয়েকটি নতুন বৈশিষ্ট্য পরীক্ষা করে দেখছিলাম এবং উদাহরণটি আমার আইডিইতে (অনিগ্রহটি মূলত, তারপরে ইন্টেলিজ) এখানে অনুলিপি করে রেখেছি

চন্দ্রগ্রহণ ল্যাম্বডা এক্সপ্রেশনগুলির জন্য কোনও সমর্থনই দেয় নি এবং ইন্টেলিজি একটি ত্রুটি জানায়

ল্যাম্বদা এক্সপ্রেশনগুলি এই ভাষা স্তরে সমর্থিত নয়

আমি জানতে চাই যে এটি আমার ইনস্টল, কোড, বা সমর্থন নিয়ে সমস্যা কিনা।


3
এটি একটি আইডিই সমস্যা। আপনাকে আপনার সংকলক সম্মতি পরিবর্তন করতে হবে।
সোটিরিওস ডেলিমনোলিস

6
আইডিইএতে, ফাইল -> প্রকল্পের কাঠামো নির্বাচন করুন; আপনার কাছে ভাষা স্তর পরিবর্তন করার বিকল্প থাকবে
fge

1
@ সিজিপার্জ: সুতরাং "সলভড" দিয়ে শিরোনামটি বর্ননা করবেন না, টিক ক্লিক করে সেরা উত্তরগুলি "স্বীকৃত" হিসাবে চিহ্নিত করুন। এটি উত্তরদাতাকে পুরস্কৃত করে এবং প্রশ্নের উত্তর দেয় যা সমস্যার সমাধান করে। যদি কোনও উত্তর সঠিক রেজোলিউশন না দেয় তবে আপনি একটি স্ব-উত্তর পোস্ট করতে মুক্ত হন এবং তারপরে এটি স্বীকৃত হিসাবে চিহ্নিত করুন (অপেক্ষার পরে)।
লরেন্স ডল


@ লাওরেন্সডল আমি এটিকে এমনভাবে মন্তব্য করেছি কারণ তারা এটিকে উত্তর হিসাবে পোস্ট করেনি, তবে একটি মন্তব্য হিসাবে।
সিজিপার্জ

উত্তর:


344

ইন্টেলিজ আইডিইএতে:

ইন File MenuProject StructureProject, পরিবর্তন Project Language Levelকরার জন্য8.0 - Lambdas, type annotations etc.

অ্যান্ড্রয়েড 3.0+ যান FileProject StructureModuleappএবং এ সম্পত্তি ট্যাব সেট Source Compatibilityএবং Target Compatibilityকরতে1.8 (Java 8)

স্ক্রীনশট:

এখানে চিত্র বর্ণনা লিখুন


69
প্রস্তাবিত সম্পাদনা থেকে নোট : আপনি প্রতিটি মডিউলের জন্য ভাষা স্তরও কনফিগার করতে পারেন File Menu → Project Structure → Modules, তবে ডিফল্টরূপে এটি প্রকল্পের ভাষা স্তরের সমান হবে।
ব্যবহারকারী 1516873

6
আমি অ্যান্ড্রয়েড স্টুডিওর জন্য একই সমস্যার মুখোমুখি হয়েছি এবং আপনি উপরে উল্লিখিত আইডিইতেও একই সেটিংস খুঁজে পাইনি। যেকোনো পরামর্শ !
CoDe

18
@ শুভ: গ্রেডলে এই লাইনগুলি যুক্ত করুন, আপনার কোডটি কাজ করবে: android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
বাডো

6
ইন্টেলিজজে 15- তে আপগ্রেড করার পরে, এটি কার্যকর হওয়ার জন্য আমাকে প্রজেক্ট ল্যাঙ্গুয়েজ স্তরটি 9 পর্যন্ত এবং তারপরে 8-এ ফিরে যেতে হয়েছিল।
আভেরস্কো

17
এই উত্তরটি পুরানো। অ্যানড্রইড 3.1.2 যান File-> Project Structure-> Module you want to support lambdasএবং সেট উত্স সামঞ্জস্যের এবং উদ্দিষ্ট সামঞ্জস্যের জন্য 1.8
ইভান

98

আপনার উত্স কোড ভাষা স্তরটি উত্স ট্যাবেও পরিবর্তন করা উচিত (মডিউল অংশ)।

ভাষা স্তর পরিবর্তন করুন


3
আপনার উত্তরটি উচ্চতর বা অন্য উত্তরগুলির সাথে একসাথে হওয়া উচিত
muni764

2
+1 টি। মডিউলগুলির অগ্রাধিকার প্রকল্পের চেয়ে বেশি। তাই আমি মডিউল অংশের ভাষা স্তর নির্ধারণ করতে পছন্দ করি।
জি লিউ

এটিতে মডিউল অন্তর্ভুক্ত নেই যা ইন্টেলিজও প্রয়োজন। ইন্টেলিজির এই দিকটি সম্পর্কে পাগল নয়, একই জিনিসটি পরীক্ষা করার জন্য খুব বেশি জায়গা।
স্পেসপ্রেজ

অসাধারণ. তোমাকে অনেক ধন্যবাদ. এটি আমার দিনকে বাঁচিয়েছিল। ল্যাম্বডা এক্সপ্রেশন সক্ষম করতে কী করা দরকার তা নিশ্চিত না হয়ে আমি ত্রুটির সাথে লড়াই করছি।
সিদ্ধার্থ থোটা

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

75

এই সমাধানটি অ্যান্ড্রয়েড স্টুডিও 3.0.০ বা তার পরে কাজ করে।

  1. ফাইল> প্রকল্পের কাঠামো> মডিউল> অ্যাপ্লিকেশন> বৈশিষ্ট্য ট্যাব

এখানে চিত্র বর্ণনা লিখুন

উভয় পরিবর্তনের Source Compatibilityএবং Target Compatibilityকরতে1.8

  1. কনফিগার ফাইল সম্পাদনা করুন

আপনি এটিকে সংশ্লিষ্ট বিল্ড.gradle ফাইলে সরাসরি কনফিগার করতে পারেন

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

42

ইন্টেলিজ ১৩ এর জন্য, কেবলমাত্র নীচের নেভিগেশনের মাধ্যমে প্রজেক্টের ভাষা স্তরটি নিজেই পরিবর্তন করুন 8.0

File
|
|
 ---------Project Structure -> Project tab
          |
          |________Project language level

java8

মডিউল ল্যাং স্তর

Modules lang levelযখন কোনও ম্যাভেন প্লাগইন ছিল না তখন আমাকেও আপডেট করতে হয়েছিল java compiler

File
|
|
 ---------Project Structure -> Modules tab
          |
          |________ language level

মডিউল ল্যাং স্তর

কিন্তু এই Module lang levelস্বয়ংক্রিয়ভাবে যদি ইতিমধ্যেই একটি স্থায়ী করা হবে maven pluginতার জন্য,

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

পরিবর্তনের পরে সবকিছু ভাল দেখাচ্ছে


5
@ সিজিপার্জ: এই উত্তরের ছবি রয়েছে। আমি এটি পছন্দ করি, কারণ আমি ইতিমধ্যে উল্লিখিত গ্রহণযোগ্য উত্তরটির স্পটটি ইতিমধ্যে দেখেছিলাম কিন্তু ড্রপডাউনটি লক্ষ্য করতে ব্যর্থ হয়েছিল। এই উত্তরে সঠিক জায়গাগুলিকে হাইলাইট করে ছবি রয়েছে যেখানে বিকল্প রয়েছে।
আর্টঅফ ওয়ারফেয়ার

2
pom.xML ফাইল সম্পর্কে অংশটি সত্যিই সহায়ক, ধন্যবাদ!
কেভিন ঝাও

3
ভাষা স্তর পরিবর্তন করার পরেও মডিউলটির জন্য আমার সমস্যাটি স্থির হয়েছে
নিহসমাট

23

অ্যান্ড্রয়েড স্টুডিও ক্যানারি বিল্ড (3. +) এ, আপনি নিম্নলিখিতগুলি করতে পারেন:

ফাইল -> প্রকল্পের কাঠামো -> মডিউল বিভাগে দেখুন আপনার শ্রেণির মডিউলগুলির নাম রয়েছে। আপনি জাভাটিকে 1.8 সংস্করণে আপগ্রেড করতে চান এমন মডিউলটিতে ক্লিক করুন। -> "উত্স সামঞ্জস্য" এবং "টার্গেটের সামঞ্জস্য" কে 1.7 বা তার থেকে কম 1.8 এ পরিবর্তন করুন। অন্য কিছু পরিবর্তন করবেন না। -> প্রয়োগ ক্লিক করুন

এখন গ্রেডল পুনরায় সিঙ্ক হবে এবং আপনার ত্রুটি সরানো হবে।


18

কেবল compileOptionsবিল্ড.gradle আপনার অ্যাপে যুক্ত করুন:

android {


...

  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

2
গুগল ঘোষণা করেছিল যে তারা কয়েক সপ্তাহ আগে জ্যাককে অবমূল্যায়ন করছে। জাভা 8 ভাষার বৈশিষ্ট্য সমর্থনটি এখন স্থানীয়ভাবে অ্যান্ড্রয়েড গ্রেডল প্লাগইন দ্বারা সরবরাহ করা হয়েছে, অ্যান্ড্রয়েড স্টুডিও ২.৪ পূর্বরূপ থেকে শুরু করুন 4. এখানে দেখুন
নীলসি

9

সর্বশেষ ব্যবহারকারীদের জন্য অ্যান্ড্রয়েড স্টুডিও 3.0.০.১ বা তার বেশি ব্যবহার করে। কেবলমাত্র Alt + এন্টার ক্লিক করুন এবং আপনার ভাষার স্তর 8.0 - লাম্বডাসে লিখুন, টিকা টিকা ইত্যাদি etc.


অন্যের চেয়ে সহজ এবং ভাল
অভিষেক সিং

6

আপনি যদি ভাষা 5 এ সমর্থন না পেয়ে থাকেন তবে এটি পরীক্ষা করুন: (আমার জন্য এটি মডিউল বিভাগে ছিল)

লানাগুগ স্তর 5 সমর্থন করে না


4

7.0 ল্যাম্বডা এক্সপ্রেশন সমর্থন করে না। আপনার ভাষার স্তরটি 8.0-এ পরিবর্তন করতে কেবল এটি আপনার অ্যাপ গ্রেডে যুক্ত করুন:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

এখানে চিত্র বর্ণনা লিখুন


2

প্রকৃতপক্ষে, জাভা 8-এর জন্য এক্লিপস সমর্থন উপলব্ধ: এখানে এবং এখানে দেখুন

  • কেপলারের ক্ষেত্রে এটি এসআর 2 এর বিপরীতে একটি "বৈশিষ্ট্য প্যাচ" হিসাবে উপলব্ধ (যেমন cl.৩.২ সূর্যগ্রহণ)
  • লুনার জন্য (গ্রহন 4.4) এটি স্ট্যান্ডার্ড রিলিজ হবে। ( প্রকাশের সময়সূচী )

2

ইন্টেলিজ আইডিইএ 15 তে জাভা 8 (ল্যাম্বডাস ইত্যাদি) দিয়ে সংকলন করতে;

  • CTRL + ALT + SHIFT + S অথবা ফাইল / প্রকল্প কাঠামো

  • প্রকল্প ট্যাব খুলুন

  • প্রজেক্ট এসডিকে সামঞ্জস্যপূর্ণ জাভা সংস্করণে সেট করুন (1.8)

  • প্রকল্পের ভাষা স্তর 8 এ সেট করুন

  • মডিউল ট্যাব খুলুন

  • ভাষা স্তর 8 এ সেট করুন, ওকে ক্লিক করুন

  • CTRL + ALT + S অথবা ফাইল / সেটিংস

  • বিল্ড, এক্সিকিউশন, স্থাপনা / সংকলক / জাভা সংকলক

  • টার্গেট বাইকোড সংস্করণটি 1.8 এ পরিবর্তন করুন, ওকে ক্লিক করুন


2

ব্যবহার: ইন্টেলিজ আইডিইএ 2017.1.4 বিল্ড করুন # আইইউ -171.4694.23

প্রকল্পের সেটিংস / প্রকল্প ট্যাবের মাধ্যমে ভাষার স্তর পরিবর্তন করা কিছুই করেনি। পরিবর্তে Alt+ Enterটিপুন এবং "8 টি ভাষা স্তর নির্ধারণ করুন - ল্যাম্বডাস, টীকা টীকাগুলি ইত্যাদি" নির্বাচন করুন " এবং এটি স্বয়ংক্রিয়ভাবে সমাধান হয়েছে।


1

স্টিফেন সি উল্লেখ করেছেন যে, প্যাচ ইনস্টল করার সময় অ্যাকলিপস কেপলারের (৪.৩) জাভা ৮ সমর্থন রয়েছে (ইনস্টলেশন নির্দেশাবলী এখানে )

একবার ইনস্টল হয়ে গেলে আপনার প্রজেক্টগুলিকে জাভা ব্যবহার করতে বলার দরকার আছে 8 প্রথমে জেডিকে গ্রহনে যুক্ত করুন:

  • উইন্ডো -> পছন্দসমূহ এ যান
  • জাভা -> ইনস্টল করা জেআরই এ যান
  • স্ট্যান্ডার্ড ভিএম যোগ করুন, এবং জেআরই এর অবস্থান নির্দেশ করুন
  • তারপরে কম্পাইলার এ যান
  • কমপ্লায়ার সম্মতি স্তরটি 1.8 এ সেট করুন

তারপরে JDK 1.8 ব্যবহার করতে প্রকল্পটি বলুন:

  • প্রকল্প -> পছন্দসমূহ এ যান
  • জাভা সংকলক যান
  • প্রকল্প নির্দিষ্ট সেটিংস সক্ষম করুন
  • কমপ্লায়ার সম্মতি স্তরটি 1.8 এ সেট করুন

1

নীচে সেটিংস পরীক্ষা করুন:

  1. ফাইল-> প্রকল্পের কাঠামো-> প্রকল্প ট্যাব।

    *Project SDK should be set to 8 or above.*
  2. ফাইল-> প্রকল্পের কাঠামো-> মডিউল।

    *Check that your or all modules has Language level set to 8 or above.*
  3. ফাইল-> সেটিংস (বা অন্যান্য সেটিংস-> নতুন আইডিয়া সংস্করণে নতুন প্রকল্পগুলির জন্য পছন্দ)

    *Search for Java compiler and check if Project byte code version 
    and per module byte code version is set 8 or above.*

আপনার সমস্যাটি উপরে বর্ণিত যে কোনও একটি শ্রেণীর মধ্যে পড়তে পারে।


1

একই প্রজেক্ট ( Android Studio 3.3.2, gradle-4.10.1-all.zip, compileSdkVersion 28, buildToolsVersion '28.0.3') এ কাজ করে জরিমানা নতুন ফাস্ট উইন্ডোজ মেশিন এবং নিম্নরেখা Java 8স্টাফের উপর লাল রং দ্বারা পুরাতন উবুন্টু 18.04 ল্যাপটপ (তবে প্রকল্পের উবুন্টু ত্রুটিগুলি ছাড়া কম্পাইল হচ্ছে)।

শুধুমাত্র দুটি জিনিস আমি এটা জোর করে পরিবর্তিত হয়েছে লাল দ্বারা নিম্নরেখাঙ্কিত বন্ধ এর ব্যতীত হয়েছিল incremental trueএবংdexOptions

compileOptions {
//    incremental true
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

//dexOptions {
//    javaMaxHeapSize "4g"
//}

মধ্যে appLEVEL - build.gradle



0

এমনকি ইন্টেলিজজে পাশাপাশি গ্রহপসে উপরে বর্ণিত প্রকল্প নির্দিষ্ট সেটিংস প্রয়োগ করার পরেও এটি আমার জন্য ব্যর্থ হয়েছিল!

আমার জন্য যা কাজ করেছিল তা হ'ল পিওএম এক্সএমএলে 1.8 সেটিং সহ উত্স এবং টার্গেট সহ ম্যাগেন প্লাগইন সংযোজন:

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

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>com.abc.sparkcore.JavaWordCount</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>   
     </execution>
            </executions>
        </plugin>
    </plugins>
</build> 

0

সম্ভাব্য কারণ # 1 (এই প্রশ্নের প্রথম 3 টি উত্তরের সমান): প্রকল্পের কাঠামো সেটিংস

  1. ফাইল> প্রকল্পের কাঠামো> প্রকল্প সেটিংসের আওতায়, প্রকল্প> এসডিকে 1.8 এ সেট করুন (সংস্করণ 65 বা তার বেশি, সর্বশেষতম 112) এবং প্রকল্পের ভাষা স্তর 8 এ সেট করুন

  2. ফাইল> প্রকল্পের কাঠামো> প্ল্যাটফর্ম সেটিংসের অধীনে, প্রকল্পে যান> আপনার জেডিকে হোম পাথটি 1.8 এ সেট করা আছে তা নিশ্চিত করুন ( version৫ বা তদূর্ধ্ব সংস্করণ সহ সর্বশেষতম ১১২)।

যদি উপরের কাজ না করে তবে আপনার সংকলকটির টার্গেট বাইকোড সংস্করণটি পরীক্ষা করুন এবং সম্ভাব্য কারণ # 2 এ যান।

সম্ভাব্য কারণ # 2: সংকলক

  1. ফাইল> সেটিংস> বিল্ড, এক্সিকিউশন, ডিপ্লয়মেন্ট> কমপাইলার এর অধীনে, জাভা কম্পাইলার> আপনার প্রজেক্ট বাইটকোড সংস্করণটি 1.8 তে সেট করুন , পাশাপাশি আপনার মডিউলগুলির জন্য সমস্ত টার্গেট বাইটকোড সংস্করণ স্থাপন করুন। প্রয়োগ ক্লিক করুন এবং ঠিক আছে চাপুন । আপনার ইন্টেলিজ আইডিই পুনরায় চালু করুন। ল্যাম্বডা এক্সপ্রেশনটি এই সময়ে আমার আইডিইতে গৃহীত হয়েছিল।

শুভ কামনা :)


2
এটি প্রায় তিন বছর আগে ছিল।
সিজিপার্জ

গুগল ব্যবহার করে এমন লোকেরা ইতিমধ্যে সমাধান হওয়া সমস্যাগুলি যাচাই করার জন্য। শিল্পে কাজ করা লোকেরা এটি জানেন।
কুজেভনি

0

আমার জন্য প্রদত্ত সমাধানগুলির কোনওটিই কাজ করে না।

এটি আপনার শেষ অবলম্বন হওয়া উচিত: -> আপনার প্রকল্পের .ml ফাইলটি খুলুন ইউপিএপিএলভিএলকে জেডকে_1_8 বা আপনি যে সংস্করণটি চান তা পরিবর্তন করুন। -> এটি যদি সহায়তা না করে তবে আপনার প্রকল্পের মূল ডিরেক্টরিতে "জেডিকে" গ্রেপ করা উচিত এবং সংস্করণ সেটিং থাকা ফাইলটি সন্ধান করে এটি আপনার পছন্দসই সংস্করণে সেট করা উচিত।


-1

Ctrl + Alt + Shift + S এবং তারপরে প্রকল্প থেকে ভাষা স্তর 1.8 নির্বাচন করুন, ল্যাম্বদা এক্সপ্রেশন সম্পর্কে আরও পড়ুন এখানে


-1

ল্যাম্বডা এক্সপ্রেশনগুলির জন্য এক্সপ্লাইজের সমর্থন পেতে:

  1. আপনি JDK 1.8 ব্যবহার করছেন তা নিশ্চিত করুন (উইন্ডো> পছন্দসমূহ> ইনস্টল করা জেআরই এবং সংকলক);
  2. আপনি যদি কোনও নতুন কার্যকরী ইন্টারফেস সংজ্ঞায়িত করেন তবে এনলটেশন @ ফাংশনাল ইন্টারফেসটি ব্যবহার করুন যাতে গ্রহনটি আপনাকে ল্যাম্বডাস ( ফাংশনাল ইন্টারফেস ) সম্পর্কিত রিফ্যাক্টরিংয়ের পরামর্শ দেয় will

-1

প্রথমে আপনি যে জেডিকে ব্যবহার করছেন তার সংস্করণটি পরীক্ষা করুন, এটি 1.8 এর চেয়ে বেশি হওয়া উচিত।

যদি তা হয় তবে নীচের পদক্ষেপগুলি করতে এগিয়ে যান।

প্রকল্পের ভাষা স্তর এবং ইন্টেলিজের মডিউলগুলি পরিবর্তন করুন ।

প্রকল্প

1. ফাইল-> প্রকল্পের কাঠামো-> প্রকল্প-> প্রকল্পের ভাষা স্তর লম্বা ভাব প্রকাশের জন্য এটি 8 এ পরিবর্তন করুন

2. ফাইল-> প্রকল্পের কাঠামো-> মডিউল-> প্রকল্পের স্তর স্তরটি লম্বা ভাব প্রকাশের জন্য এটি 8 এ পরিবর্তন করুন


-1

এই উত্তরগুলি নতুন আপডেট হওয়া ইন্টিলিজের জন্য নয় ... নতুন ইনটেলিজের জন্য ..

-> ফাইল -> প্রকল্পের কাঠামো -> গ্লোবাল লাইব্রেরি ==> জেডিকে ১.৮ বা উচ্চতর সংস্করণে সেট করুন।

এছাড়াও ফাইল -> প্রকল্পের কাঠামো ---> প্রকল্পগুলি ===> "প্রকল্পের ভাষা ম্যানুয়াল" 8 এ সেট করুন

এছাড়াও ফাইল -> প্রকল্পের কাঠামো ---> প্রকল্প এসডিকে ==> 1.8

এটি আপনার প্রকল্পের জন্য ল্যাম্বডা এক্সপ্রেশন সক্ষম করে।

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