ইন্টেলিজ আইডিইএ 13 জাভা 1.5 ব্যবহার করে 1.7 নির্ধারণ করা সত্ত্বেও


147

সমস্ত প্রকল্পের সেটিংসে জেডিকে 1.7 উল্লেখ করেও (অন্তর্ভুক্ত File -> Project Structure -> Project :: Project SDK), IntelliJ 13কিছু সাধারণ জাভা 7 কোড সংকলনের চেষ্টা করার সময় নিম্নলিখিত ত্রুটিটি উত্পন্ন হয় যা হীরা অপারেটর ব্যবহার করে:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

কনফিগারেশনে অন্য কোনও জায়গা রয়েছে যেখানে প্রত্যাশিত -source 7বিকল্পটি সক্ষম করা উচিত?


8
চেষ্টা করেছেন: File -> Project Structure -> Project :: Project language levelবদলে Diamonds, ARM, multi-catch etc?
অ্যাডাম শাখাবভ

39
হ্যাঁ. যেমনটি দেখা যাচ্ছে, ফাইল -> প্রকল্প কাঠামো -> মডিউলসমূহ :: উত্সগুলি (পাথ এবং নির্ভরতার পাশে) এর অধীনে আরও একটি বিকল্প রয়েছে এবং এটিতে "ভাষা স্তর" বিকল্প রয়েছে যা সঠিকভাবে সেট করা দরকার। মন্তব্য এবং উত্তরের জন্য আপনাকে ধন্যবাদ সবাইকে! :-)
পিএনএস

ডুপ্লিকেট stackoverflow.com/questions/21747254/...
rofrol

33
3 টি জায়গা রয়েছে যা আপডেট করা দরকার। (1) ফাইল -> সেটিংস (শর্টকাটের জন্য Ctrl + Alt + s) এরপরে "বিল্ড, এক্সিকিউশন, ডিপ্লোয়মেন্ট"> কম্পাইলার> জাভা সংকলক এবং "টার্গেট বাইকোড সংস্করণ" আপনার কাঙ্ক্ষিত জাভা সংস্করণে পরিবর্তন করুন। (2 এবং 3) অন্য জায়গাটি ফাইল> প্রকল্পের কাঠামোর অধীনে রয়েছে (Ctrl + Alt + Shift + S)> "প্রকল্প সেটিংস"> "প্রকল্প" প্রজেক্ট এসডিকে জাভার উপযুক্ত সংস্করণে নির্দেশ করতে এবং প্রকল্পের ভাষা স্তরটি সেট করে সঠিক সংস্করণ। কোডটি সহায়তা কেবলমাত্র আপনার জন্য ভাষার স্তর পরিবর্তন করে দুর্ভাগ্যক্রমে নতুন প্রকল্পগুলির জন্য এটি বিরক্তিকর করে তুলছে।
বিটমে

2
আমার প্রকল্পে আমার যদি 200 মডিউল থাকে তবে আমার কি সারা দিন তাদের পুনরায় ক্লিক করতে হবে?

উত্তর:


114

যদি এর কোনও কিছুই সহায়তা না করে (আমার ক্ষেত্রে), আপনি এটি আপনার pom.xML এ সেট করতে পারেন:

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

এই শান্ত ছেলেটি এখানে উল্লেখ করেছে: https://stackoverflow.com/a/25888116/1643465


4
ভাল ধারণা, তবে আপনি যদি আপনার সমস্ত সতীর্থের সেটিংসটি উড়িয়ে দিতে না চান তবে আপনার ভাগাভাগি করে নেওয়া প্রকল্পগুলিতে প্রতিশ্রুতিবদ্ধ হবেন না
বিশ্বে

8
এটি আমার জন্য সমস্যাটি সমাধান করেছে, ধন্যবাদ! কীভাবে এটি "সতীর্থদের সেটিংস উড়িয়ে দিতে পারে"? যদি প্রকল্পটির লক্ষ্যমাত্রা 1.7 হয় তবে এটি 1.7। এটি প্রতিটি দলের সতীর্থের আলাদা টার্গেটের পরিবেশের মতো নয়।
ইস্পির

1
দারুণ, মাইন ম্যাভেন প্রজেক্ট।
হুথং

1
নতুন মাভেন প্রকল্পগুলির জন্য এই সেটিংটি ডিফল্ট মাভেন প্রকল্পগুলিতে যুক্ত করা যেতে পারে। পছন্দসমূহ ব্যবহার করুন | সম্পাদক | ফাইল এবং কোড টেমপ্লেট | মাভেন | ম্যাভেন প্রজেক্টস.এক্সএমএল <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> ইন্টেলিজ্প সমর্থন ফোরাম
পিআরএমডেক

এটি আমার পক্ষে কাজ করেছিল। তবে কেবল যখন আমি ইন্টেলিজি পুনরায় চালু করেছি, আমি কেবলমাত্র প্রকল্পটি একা পুনর্নির্মাণের চেষ্টা করেছি এবং এটি কার্যকর হয়নি।
মেটিন ড্যাগসিলার

155

দয়া করে আপনার প্রকল্প / মডিউল ভাষার স্তর পরীক্ষা করুন (প্রকল্পের কাঠামো | প্রকল্প; প্রকল্পের কাঠামো | মডিউল | মডিউল-নাম | উত্স)। আপনি সেটিংস | একবার দেখে নিতে পারেন সংকলক | জাভা সংকলক | প্রতি-মডিউল বাইটকোড সংস্করণ।

এটিও সেট করুন:

ফাইল -> প্রকল্পের কাঠামো -> মডিউল :: উত্সগুলি (পাথ এবং নির্ভরতার পাশে) এবং এতে একটি "ভাষা স্তর" বিকল্প রয়েছে যা সঠিকভাবে সেটও করা দরকার।


2
এবং চেক যদি Additional command line parametersJava Compilerসেটিংস ফাঁকা।
নেপলতানিউডাজ

2
দ্রষ্টব্য: তৃতীয় জিনিস (ফাইল -> প্রকল্পের কাঠামো -> মডিউল :: উত্স) আমার জন্য এটি সমাধান করেছে।
পিটার

এই উত্তরে এই প্রক্রিয়াটির সহায়ক স্ক্রিনশটগুলি: stackoverflow.com/a/21747329/1146608
প্যাট্রিক এম

1
মাভেন ব্যবহার করা থাকলে, পমটি
বেঞ্জ

11
ভাষা স্তরের জন্য +1। সেখানে করা উচিত নয় সেট এবং পুনরায় সেট এবং একই # $% ^ জিনিস পুনরায় পুনরায় সেট করার অনেক জায়গা হতে!
জি অ্যান - সোনারসোর্স টিম

52

[ইন্টেলিজ আইডিইএ 2016.2 এর জন্য]

আমি আপ-টু-ডেট স্ক্রিনশট দিয়ে পিটার গ্রোভের উত্তরের অংশটি প্রসারিত করতে চাই । বিশেষত এই বিশেষ অংশ:

আপনি সেটিংস | একবার দেখে নিতে পারেন সংকলক | জাভা সংকলক | প্রতি-মডিউল বাইটকোড সংস্করণ।

আমি বিশ্বাস করি (কমপক্ষে ২০১ 2016.২০১)): gitএগুলি পুনরায় পুনরায় সেট করতে বিভিন্ন কমিটগুলি পরীক্ষা করে ।

প্রতি-মডিউল বাইটকোড সংস্করণ


5
আমি তাদের সঠিক সংখ্যাগুলিতে এগুলি বজায় রাখা ছেড়ে দিয়েছি (কোনও কারণে তারা পরিবর্তিত হয় - আমি যখন করি তখন ধরে নিই git checkout)। আমি দেখতে পেয়েছি যে আমি এই তালিকার প্রবেশদ্বারগুলি নিরাপদে মুছতে সক্ষম হয়েছি; মডিউলটি "প্রকল্প বাইকোড সংস্করণ" ব্যবহার করে ফিরে যায় falls
বার্চ্লাবস

এই সংখ্যাগুলি আমার জন্য অপ্রত্যাশিতভাবে 1.5 তে ফিরেও আসে। Pom.xML ফাইলটিতে কেবল সংকলক উত্স এবং লক্ষ্য সংস্করণগুলিতে হার্ড কোডিং নিয়মিতভাবে কাজ করে।
শেলডোনক্রেজার

এই স্ক্রিনশটের শীর্ষের নিকটে "প্রকল্প বাইটকোড সংস্করণ" সেটিংটি পাশাপাশি হাইলাইটেড "টার্গেট বাইটকোড সংস্করণ" নোট করুন।
বেসিল বাউরেক

@ বার্চ্ল্যাবস আপনাকে ধন্যবাদ, আমি মনে করি এটি সঠিক উত্তর।
কুড়ি

1
এটিই একমাত্র সমাধান যা আমার জন্য সমস্যাটি স্থির করে দিয়েছিল, ইন্টেলিজ আইডিইএ 2019.1
রোচা দা সিলভা

19

বিকল্পভাবে, আপনি আপনার 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>

এই প্রকল্পটি .idea ফোল্ডার এবং .iml ফাইল মুছে ফেলার পরে প্রজেক্টটি আবার খুলতে গিয়ে কাজ করে worked
অ্যান্ড্রু

1
আইডিতে "রিফ্রেশ ম্যাভেন" বোতাম টিপানোর কাজ করা উচিত।
ওলগা ম্যাসিয়াসেজেক

সমাধানের কাজ করার জন্য @ ওলগা ম্যাসিয়াসেক রিফ্রেশ দরকার ছিল। ধন্যবাদ!
পেইন

14

আমি নীচে ইন্টেলিজ আইডিএতে পরিবর্তন করার চেষ্টা করেছি:

1।

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2।

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

তবে কিছুই কার্যকর হয়নি, এটি সংরক্ষণ করার সাথে সাথে এটি সংস্করণগুলিকে জাভা 1.5 তে রূপান্তরিত করে।

যাইহোক, মূলের (প্রকল্প স্তর) পাম.এক্সএমএল এর নীচে লাইন যুক্ত করা উপরের সমস্যাটি সমাধান করতে আমাকে কাজ করেছে: (উভয় বিকল্প আমার পক্ষে কাজ করেছে)

বিকল্প 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

বিকল্প 2:

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

10

ফাইল-> প্রকল্পের কাঠামো-> প্রকল্প সেটিংস-> প্রকল্প-> প্রকল্পের ভাষা স্তর

ফাইল-> প্রকল্প কাঠামো-> প্রকল্প সেটিংস-> মডিউল-> ভাষা স্তর

ড্রপ ডাউন ব্যবহার করে স্তর পরিবর্তন করুন


4

আপনার কমান্ড লাইনে (ইউনিক্স টার্মিনাল) আপনার প্রকল্পের রুট ফোল্ডারে যান এবং এটি করুন

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

এটি আপনার সমস্ত প্রকল্পের ভাষা স্তরের সম্পত্তি পরিবর্তন করবে .আইএমএল ফাইলগুলি জাভা 1.5 থেকে জাভা 1.8 এ পরিবর্তন করবে।


এখনও নিশ্চিত নয় তবে আপনাকে compiler.xmlপ্রকল্পের মূলের জেডিকে সংস্করণও প্রতিস্থাপন করতে হতে পারে (ইন্টেলিজজে 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
ওলেকসান্ডার ভলিনেটস

compiler.xml আপনার প্রকল্পের জন্য সুনির্দিষ্ট হতে পারে। এই কমান্ডটি কেবলমাত্র * .iml ফাইলগুলিকে লক্ষ্য করে যা কেবলমাত্র ইন্টেলিজ দ্বারা প্রয়োজনীয়। আপনাকে আপনার maven pom.xML বা আপনার ক্ষেত্রে সংকলন। XML আইডিই থেকে পৃথক করে ভাষা সেটিংস সামঞ্জস্য করতে হতে পারে।
সদীপ সমবারাজু

1
@ সৌদীপসম্বারাজু সংকলন.এক্সএমএল যে বিল্ডেবল আইডিয়া প্রকল্প দেখেছি সেখানে উপস্থিত is আমি যা দেখছি তা থেকে এই ফাইলটি সেটিংস-> সংকলক (লিনাক্স) পছন্দসমূহ-> সংকলক (ম্যাকোস) এর মডেল। ওলেকসান্ডার যেমনটি বলেছেন বা UI ছাড়া হাতে লিখেছেন তেমন স্ক্রিপ্ট দ্বারা লক্ষ্য সংস্করণ পরিবর্তন করতে আপনি এটি ব্যবহার করতে পারেন।
সের্গে সরসায়ান

@ সার্জি সার্জসায়ান - আমি কেবল এটি যাচাই করেছি, এটি .idea ফোল্ডারে রয়েছে যা আমি অনুসন্ধান করে খুঁজে পাইনি। এটা ইশারা জন্য ধন্যবাদ।
সদীপ সমবরাজু

2

প্রথমত, আপনাকে "প্রকল্প বাইকোড সংস্করণ" এর অধীনে পরিবর্তন করতে হবে File > Settings,Compiler > Java Compiler

দ্বিতীয়ত, একটি সম্পূর্ণ পুনর্নির্মাণ করুন।


2

আমার একই সমস্যা তবে বিভিন্ন পরিস্থিতি নিয়ে। আমি কমান্ড লাইনে ( mvn clean install) এর মাভেনের সাথে কোনও সমস্যা ছাড়াই সংকলন করতে পারি , তবে ইন্টেলিজে আমি সর্বদা পেয়েছি"java: diamond operator is not supported in -source 1.5" জাভা ১.৮ সহ মেভেন-কম্পাইলার-প্লাগইন সেট করে রেখেছি সংকলন ত্রুটি ।

দেখা গেল যে আমার মেভেনের সেটিংস.এক্সএমএলে আমার রিমোট রিপোজিটরি সেটিং রয়েছে যা প্রকল্পটি নির্ভর করে, তবে ইন্টেলিজ তার নিজের মাভেন ব্যবহার করেন যা আমার স্থানীয় মেভেনের সাথে একই সেটিং নেই।

সুতরাং আমার সমাধানটি Settings -> Build, execution, Deployment -> Maven -> Maven home directoryস্থানীয় মেভেন ব্যবহার করার জন্য ইন্টেলিজের মেভেন সেটিংস ( ) পরিবর্তন করেছিল ।


2

ইন্টেলিজি কমিউনিটি সংস্করণ 2019.02 এ, নিম্নলিখিত সেটিংস পরিবর্তন করা আমার পক্ষে কাজ করেছে

  1. ফাইল আপডেট করুন-> প্রকল্পের কাঠামো-> প্রকল্প সেটিংস-> প্রকল্প-> প্রকল্প ভাষা স্তরটি জাভা ১১-তে (আপনার প্রকল্পে যে জাভা সংস্করণটি আপনি ব্যবহার করতে চান তা আপডেট করুন) ড্রপ ডাউন ব্যবহার করে।

  2. ফাইল আপডেট করুন -> প্রকল্পের কাঠামো-> প্রকল্প সেটিংস-> মডিউল-> ভাষা স্তর

  3. ফাইল-> সেটিংস-> বিল্ড, এক্সিকিউশন, স্থাপনা -> সংকলক -> জাভা সংকলক-> প্রজেক্ট বাইটকোড সংস্করণ জাভা ১১-তে আপডেট করুন।

  4. ফাইল-> সেটিংস-> বিল্ড, এক্সিকিউশন, স্থাপনা -> সংকলক -> জাভা কম্পাইলার-> প্রতি মডিউল বাইট কোড সংস্করণ এর অধীনে সমস্ত এন্ট্রিগুলির জন্য টার্গেট সংস্করণ আপডেট করুন।


0

ইনটেলিজে 2017 সালে আমার জন্য নিচের সম্পত্তিটি কাজ করেছিল

  <properties>
        <java.version>1.8</java.version>       
  </properties>

এটি কেবল তখনই কাজ করে যদি আপনি বসন্ত বুটের মতো কোনও প্যারেন্ট প্রকল্প ব্যবহার করেন।
wggn

0

এটির কারণ হতে পারে এমন আরও একটি জিনিস এর ভুল versionরয়েছে<parent> প্রকল্পটির ।

আমার ক্ষেত্রে এটি একটি অ-বিদ্যমান প্রকল্পের দিকে ইঙ্গিত করছিল এবং কোনও কারণে ইন্টেলিজি সেটিংয়ে সংস্করণটি 1.5 এ ডাউনগ্রেড করেছে এবং পরে যখন আমি এটি স্থির করেছি তখনও এটি লক্ষ্য কোড সংস্করণটিকে 5 হিসাবে ব্যাখ্যা করা হয়েছিল (এটি 11 এ সেট করা সত্ত্বেও)।

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