প্রতিবার পম পুনরায় লোড হওয়ার পরে জাভা ভাষার স্তরটি স্যুইচ করতে ইন্টেলিজ আইডিইএ থামান (বা ডিফল্ট প্রকল্পের ভাষা স্তর পরিবর্তন করুন)


145

ইন্টেলিজিজ 12 ব্যবহার করে আমার একটি জাভা প্রকল্প রয়েছে এবং আমি পোম.এক্সএমএল সহ মাভেন ব্যবহার করি। আমার প্রকল্পটি জাভা 8 ব্যবহার করছে, তবে মনে হচ্ছে প্রকল্পটি আমদানির সময় ডিফল্ট প্রকল্পের ভাষা স্তরটি 6 এ সেট করা হয়েছে।

আমি ভাষা স্তরটি 8.0 (এফ 4 -> মডিউল -> ভাষা স্তর) এ পরিবর্তন করতে পারি তবে যতবারই আমি আমার পিএমএক্সএমএল সম্পাদনা করি ততবারই প্রকল্পের স্তরটি "প্রকল্পের ভাষা স্তর ব্যবহার করুন" তে ফিরে আসে এবং আমাকে আবার এই সেটিংসটি সম্পাদনা করতে হবে এবং আবার।

ডিফল্ট ভাষার স্তর 8.0 এ সেট করতে আমার কি কিছু pom.xML যুক্ত করার দরকার আছে?


2
আপনার পম কি সংকলক প্লাগইন কনফিগারেশনে উত্স এবং লক্ষ্য স্তর নির্দিষ্ট করে?
মার্ক রোটভিল

হ্যাঁ, উত্স এবং লক্ষ্য 1.8 এ সেট করা হয়েছে। তবে প্রকল্পটি আমদানির সময় এটি নির্দিষ্ট করা হয়নি
কোয়ান্টিন

@ কুইন্টিন এ জাতীয় পরিস্থিতিতে প্রকল্পটি নতুন স্থানে পুনরায় সংস্থান করা এবং এর পরিবর্তে নতুনভাবে ইন্টেলিজিকে আমদানি করা সহজতর হতে পারে।
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


174

মার্কের মন্তব্য অনুসারে, এটি কীভাবে করবেন তা এখানে:

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

10
প্লাগইনটি পোম, উইথ 1.8 টার্গেটে উপস্থিত রয়েছে তবে এতে কোনও পরিবর্তন হয় না :(
কোয়ান্টিন

2
আপনি কি নিজের মেভেন পোমের সক্রিয় স্বয়ংক্রিয় আমদানি পেয়েছেন? আপনি কি প্যারেন্ট (এবং পিতামহ) পমগুলি পরীক্ষা করেছেন, সেখানে কি কোনও 1.6 সেটিংস বিরোধী হতে পারে?
ভাইকিংস্টিভ

1
প্রকৃতপক্ষে মূল প্রকল্পটি স্প্রিং-বুট-স্টার্টার-প্যারেন্ট-১.১.৯. রিলি.এস.ই.পি.এম.এমএল এবং প্লাগইন ম্যানেজমেন্টে ম্যাভেন-কম্পাইলার-প্লাগইনটি ১.6 সেট করা আছে ... আমি কোনও সেটিংস ছাড়াই এই সেটিংসগুলিকে ওভাররাইড করার চেষ্টা করেছি। মনে হচ্ছে স্প্রিং বুট ১.২.আরসি তে আর মেভেন-কম্পাইলার-প্লাগইন অন্তর্ভুক্ত নয়, আমি এটি ব্যবহার করে দেখি। - স্বয়ংক্রিয় আমদানি সক্ষম।
কোয়ান্টিন

দুর্দান্ত, সে কারণেই হতে পারে। আপনি যদি মাভেন সংকলক প্লাগইনের একই সংস্করণ নির্দিষ্ট করে থাকেন তবে উত্স / লক্ষ্য সেটিংস ওভাররাইড করা সম্ভব হতে পারে। সম্ভবত এটি আপনার প্রকল্পের মূল pom.xML এ চেষ্টা করুন।
ভাইকিংস্টিভ

2
আমার ক্ষেত্রে এটি কার্যকর হয়নি। আমাকে এই উত্তরে উল্লিখিত সেটিংসটি সরিয়ে ফেলতে হয়েছিল এবং পরিবর্তে নিম্নলিখিতটি যুক্ত করতে হয়েছিল:<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
বেনামে

99

ভাইকিংস্টাইভের উত্তরের একটি সংক্ষিপ্ত সংস্করণ হ'ল:

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

6
একটা বিরক্তি কম!
আর্টুর সিচোস্

4
এটি কেবল একটি সংক্ষিপ্ত সংস্করণ ছিল না তবে আমার ক্ষেত্রে এটি একটি প্রয়োজনীয় সংস্করণ ছিল। ভাইকিংস্টিভের উত্তর আমার পক্ষে কার্যকর হয়নি। সুতরাং আমি সেটিংটি সরিয়েছি এবং এটি ব্যবহার করেছি।
বেনামে

23

আমি মনে করি এটি ম্যাভেন সংকলক প্লাগইন এবং ইন্টেলিজি ধারণা মধ্যে ধারণাগত দ্বন্দ্বের সাথে সম্পর্কযুক্ত। স্পষ্টতই সংকলক প্লাগইনের নতুন সংস্করণগুলির ডিফল্ট মাত্রা 1.5 রয়েছে (দেখুন http://maven.apache.org/plugins/maven-compiler-plugin/ )। সুতরাং যদি কোনও প্রকল্পে সংকলক প্লাগইনটি মোটামুটি ব্যবহৃত হয়, এবং সংকলক স্তরটি স্পষ্টভাবে pom.xML এ সেট না করা হয়, যখনই POM পুনরায় প্রক্রিয়া করা হয় স্তরটি ডিফল্টে ফিরে যাবে।

সুতরাং একটি ধারণাগত দ্বন্দ্ব রয়েছে যা ইন্টেলিজ আইডিইএ দ্বারা উপেক্ষা করা হয়েছে। আইডিই তবুও একজনকে প্রকল্প এবং মডিউল সেটিংস সেট করার অনুমতি দেয় তবে কোনও সতর্কতা বা প্রতিক্রিয়া সরবরাহ করে না যে এই সেটিংটি পম.এক্সএমএল দ্বারা নিয়ন্ত্রিত। সমাধানগুলি হয় স্পষ্টভাবে POM সংকলক প্লাগইন সেটিংসকে ওভাররাইড করার অনুমতি দেয় (সম্ভবত বুদ্ধিমান হবে না কারণ আপনি যখন কমান্ড লাইনে মেভেন ব্যবহার করবেন তখন কী ঘটে), বা যখন পম থেকে এই সেটিং কার্যকর হয় তখন আইডিইতে নিয়ন্ত্রণগুলি নিষ্ক্রিয় করা।

বর্তমান সময়ে সমাধানটি হল মডিউল সেটিংসে সেট করার চেষ্টা করার পরিবর্তে পোমের কম্পাইলার প্লাগইনে কাঙ্ক্ষিত সংকলক স্তরটি পুনরায় আমদানি করা।


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

9

আমি JDK 8 থেকে JDK 10+ তে একটি প্রকল্প আপগ্রেড করছি। আমি সংকলক বৈশিষ্ট্য নীচে সঠিকভাবে নির্দিষ্ট ছিল:

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

তবে আইডিয়া প্রকল্পটি ভাষা স্তরটিকে 8 এ পুনরায় সেট করতে থাকবে।

অবশেষে আমি বুঝতে পেরেছিলাম যে আইডিয়া এর মাভেন আমদানি প্রক্রিয়াটি ভাষা আমদানি করতে JDK 8 ব্যবহার করছে যা ভাষার স্তরটি <= 8 এ সীমাবদ্ধ করেছে।

ঠিক করার জন্য আমি সেটিংস -> বিল্ড, এক্সিকিউশন, ডিপ্লোয়মেন্ট -> বিল্ড টুলস -> ম্যাভেন -> জেডিকে 11 ব্যবহার করতে আমদানি করে 'আমদানিকারকদের জন্য জেডিকে' আপডেট করেছি।

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


আমার সমস্যা সমাধান করেছেন। মনে হচ্ছে ইন্টেলিজি তাদের অভ্যন্তরীণ জেআরই পরবর্তী প্রকাশনাগুলির সাথে আপডেট করেছে (2019.2 এর আশেপাশে কোথাও)। খুঁজে বের করা বেশ শক্ত ...
হাসান আসলাম

8

এটি করার দুটি উপায় রয়েছে, আপনার pom.xML ফাইলে এর মধ্যে একটি যুক্ত করুন:

প্রথম - বৈশিষ্ট্য যুক্ত করুন

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

দ্বিতীয়- প্লাগইন যুক্ত করুন

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>

যদি এটি সাহায্য করে তবে আমাকে জানান।


আমি এই দুটিই করেছি এবং কম্পাইলারটি প্রতিবার ইনটেলিজের মধ্যে থেকে এমভিএন সংকলন চালানোর চেষ্টা করার পরে 1.5 এ পুনরায় সেট করা হচ্ছে। যাইহোক, ইন্টেলিজের বাইরের কমান্ড লাইন থেকে চালানোর সময় এটি কাজ করে works
ব্যবহারকারী26270

1
ইন্টেলিজিতে, পরিবর্তনের পরে মাভেন সেটিংস পুনরায় আমদানি করতে মনে রাখবেন। সমাধানটি আমার পক্ষে কাজ করেছিল।
পিয়ারলুইগি ভার্নেটো

4

সমাধানগুলির কোনওটিই আমার ক্ষেত্রে সহায়তা করেনি। আমার কোনও জাভা সংস্করণ নির্দিষ্ট করার দরকার নেই pom.xml

আমার <project-name>.imlফাইলটি খোলার এবং সেখানে জেডিকে সংস্করণ পরিবর্তন করা দরকার।

মূল:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
    <!-- ...                                                   ^ -->
    <!-- ...                                                   | -->

আপডেট করা হয়েছে:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <!-- ...                                                   ^ -->
    <!-- ...                                                   | -->

এটি মোটেই বোঝা যায় না। জাভা 1.5 এর জন্য আমি কোনও জেডিকে সংস্করণ নির্দিষ্ট করেছি না।


এটি নিজেই, ইন্টেলিজিজ 2019.3 এ আমার জন্য সমস্যাটি সমাধান করেছে, আমার পমের বা অন্য কোথাও যে কোনও পরিবর্তন করার প্রয়োজন নেই। আমি একইভাবে জেডিকে 1.5 কে কোথাও নির্দিষ্ট করেছিলাম না।
মাইকেল ক্রিস্টফ

উদাহরণ: <... LANGUAGE_LEVEL = "JDK_11">
ড্যানিয়েল ডি লিয়ন

1

ড্রপউইজার্ডের সাথে মাইক্রোসার্চেস তৈরির কারণে আমি এই সমস্যার সাথে অনেক লড়াই করেছি। অবশেষে আমি জানতে পেরেছিলাম যে ভুল পোম ফাইলে আমার মূল সম্পত্তি রয়েছে (মূল পরিষেবাটির pom.xml)।

সুতরাং, অন্যান্য প্যাকেজগুলি লাইব্রেরির মতো হলেও , আমি জাভা 8 সিনট্যাক্সটি ব্যবহার করতে পারিনি।

যখন আমি বিল্ড প্লাগইনটিকে "গ্লোবাল" তে রিফ্যাক্টর করি .pom.xml "ফাইলে সমস্ত শিশু পাত্রে নতুন সিনট্যাক্স ব্যবহার করতে সক্ষম হয়েছিল।

মাল্টি-কনটেইনার প্রকল্প নিয়ে সমস্যা থাকা কাউকে সহায়তা করতে পারে


0

আমার জন্য প্রয়োজনীয় জাভা সংকলক সংস্করণে (আমার ক্ষেত্রে 1_7) পিওএম (প্লাগইন প্লাস বৈশিষ্ট্য) আপডেট করার সমাধান কাজ করেছে। তবে যেহেতু প্রতিটি প্রকল্পের জন্য .iml ফাইলটি মূল পম দিয়ে তৈরি হয়েছিল (উপরে কেউ দ্বারা বর্ণিত হিসাবে 1_5 এর ডিফল্ট সংকলক সংস্করণ সহ) এর 1D5 সংস্করণ রয়েছে, এটি এখনও পম সংস্করণকে ওভাররাইড করে।

আমি নিজে .idea ফোল্ডারটি ম্যানুয়ালি মুছে ফেলেছি এবং আপডেট করা পোম থেকে রিমপোর্টের সাহায্যে মডিউলটি ইন্টেলিজজে আমদানি করেছি। যখন আমি আপডেট করা POM থেকে মডিউলটি পুনরায় রপ্ত করেছি তখন আমি দেখতে পেলাম যে iml ফাইলগুলির আপডেট হওয়া জেডিকে সংস্করণ ছিল (আমার ক্ষেত্রে 1_7)।


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