মারাত্মক ত্রুটি সংকলন: অবৈধ লক্ষ্য প্রকাশ: 1.8 -> [সহায়তা 1]


170

অবৈধ টার্গেট রিলিজে পোস্ট করা পোস্টের মতো একই সমস্যা : ১.7 তবে ব্লগ অনুসরণ করার পরেও আমার সমস্যা এখনও সমাধান হয়নি।

Org.apache.maven.plugins: maven-compiler-plugins: 3.1: hm_app প্রকল্পে সংকলন (ডিফল্ট-সংকলন) কার্যকর করতে ব্যর্থ হয়েছে: মারাত্মক ত্রুটি সংকলন: অবৈধ লক্ষ্য প্রকাশ: 1.8 -> [সহায়তা 1]

আমি যখন এই সমস্যার মুখোমুখি হলাম তখন আমি টিউটোরিয়াল হিসাবে অনুসরণ করছিলাম।

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

আউটপুট

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
... এবং আপনি নিশ্চয়ই জাভা 8 কোথাও ইনস্টল করেছেন?
মাকোটো

আমার x86, 64 জাভা 7 এবং জাভা 8
rvd

3
ঠিক আছে. তাহলে আপনি জাভা 8 সংকলক ছাড়া জাভা 8 কোডটি সংকলন করার চেষ্টা করছেন কেন?
মাকোটো

@ মাকোটো টাই আমার জাভা ইন্সটল করতে সমস্যাটি দেখার জন্য এটি 8 সমাধান করেছে .... টাই ম্যান :)
আরভিডি

@ মাকোটো অবশেষে আপনি যা বলছেন তা পেয়েছি "ওকে। তাহলে আপনি জাভা 8 সংকলক ছাড়াই জাভা 8 কোডটি সংকলনের চেষ্টা করছেন কেন?" তাই আমি শুধু আমার pom.xml ফাইল java.version পরিবর্তন> 1.8 </java.version> এ java.version> 1.7 </java.version> এবং আমিও java7 উপর mvn কম্পাইল ব্যবহার করতে পারে
rvd

উত্তর:


281

আপনি %JAVA_HOMEjdk 1.7 তে সেট করেছেন তবে আপনি 1.8 ব্যবহার করে সংকলনের চেষ্টা করছেন। Jdk 1.8 ইনস্টল করুন এবং এটিতে আপনার %JAVA_HOMEপয়েন্টগুলি নিশ্চিত করুন বা লক্ষ্য প্রকাশটি 1.7 এ নামান।

অবৈধ লক্ষ্য প্রকাশ: 1.8

লক্ষ্য প্রকাশটি jdk সংস্করণ বোঝায়।


7
আমার ক্ষেত্রে আরও একটি সম্ভাব্য সমাধান সম্পাদন করা pom.xml ফাইল java.version> 1.8 হল </java.version> এ java.version> 1.7 </java.version>
rvd

1
এটি বিশেষত যেখানে ম্যাভেন জাভা সংস্করণটির সন্ধান করে। সুতরাং কার্যকরভাবে আপনি জাভা সংস্করণটিকে আপনার% জাভাআহোমে ইনস্টল করে রেখেছেন।
জাভিয়র

2
আমার ম্যাকের জন্য, আমি জাভাওয়াহমোম = /usr/libexec/java_home -v 1.8১.৮ জেডিকে-র জন্য উপযুক্ত স্থানে সেট করতে JAVA_Home = রফতানি করি । আপনার প্রিয় সংস্করণটি 1.8 এর জায়গায় সরবরাহ করুন। (= এর পরে এবং 8 পরে ব্যাকটিকস রয়েছে)।
ব্রুস সজলুইনস্কি

হ্যাঁ, ঠিক আছে আপনি আমাকে পেয়েছেন। আমি এটি পরিবর্তন করে অন্য লিগ্যাসি প্রোগ্রাম সংকলন করতে যা গতকাল কেবলমাত্র 1.7 সমর্থন করে: ডি ধন্যবাদ!
দাভুত গার্বিজ

31

প্লাগইনে মান রাখুন:

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

ত্রুটিটি ব্যবহার করা হয়েছিল:

<source>${java.version}</source>
<target>${java.version}</target>

2
আমার ক্ষেত্রে, সমাধানটি হ'ল উভয় উত্স এবং লক্ষ্য নির্ধারণ করা 1.7
চিন্তিত

আমি কোন ফাইলে এটি খুঁজে পেতে পারি?
ইউস্রিল মৌলিদন রাজি

21

আমার ক্ষেত্রে ম্যাভেন "রান কনফিগারেশন" ভুল জেআরই (1.7) ব্যবহার করছিল। নিশ্চিত পরীক্ষা হতে চালান -> চালান কনফিগারেশনগুলির -> (TAB) JRE কিছু jdk1.8.x. হতে


এটি সত্য, তাই পরবর্তী সময়ে আমাদের যদি ত্রুটিটি আসে তবে তা যাচাই করার জন্য আমাদের নীচের জিনিসগুলি রয়েছে: জাভাহোম, বিল্ড কনফিগারেশন, রান
ফারহান

13

আমি একটি জেডিকে ১.7 এবং জেআরই ১.৮ নির্দেশ করে থাকায় সমস্যাটি সমাধান হয়েছে। কমান্ড কমান্ড আমার টাইপ প্রম্পট

java -version

এবং

javac -version.

উভয় একই হওয়া উচিত।  


5

গ্রহণের জন্য এখানে আমি কীভাবে আমার সমস্যার সমাধান করেছি:

  1. পছন্দসমূহ -> সংকলক -> সংকলক অভিযোগকারী স্তর (1.8 এ পরিবর্তন করুন) এখানে চিত্র বর্ণনা লিখুন

  2. পারফরমেন্স -> ইনস্টল করা জেআরই -> জাভা SE 8 1.8 নির্বাচন করুন এখানে চিত্র বর্ণনা লিখুন

  3. মাভেন বিল্ড হিসাবে রান ব্যবহার করে ম্যাভেনের মাধ্যমে পুনর্নির্মাণ করুন।

এটি আপনাকে আর অবৈধ লক্ষ্য ত্রুটি দেখাবে না।
দ্রষ্টব্য: আমার টার্মিনালে আমাকে অন্য কোনও ভেরিয়েবল সেট বা পরিবর্তন করতে হয়নি। আশাকরি এটা সাহায্য করবে.


2

আপনার। প্রোফাইলে এটি রাখা গতিশীলভাবে আপনার যত্ন নেবে $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

পরে আপনার শেলটি বন্ধ করুন, একটি নতুন খুলুন এবং এর মাধ্যমে পরীক্ষা করুন

echo $JAVA_HOME

এটির মতো কিছু প্রদর্শন করা উচিত

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

যদি তা না হয় তবে আপনার প্রারম্ভিক স্ক্রিপ্টগুলিতে জাভাআহোমের অন্য কোনও অ্যাসাইনমেন্ট সরিয়ে ফেলুন। মনে রাখবেন যে এই স্টার্টআপ স্ক্রিপ্টগুলি .এমনভাবে শুরু হয় যাতে সেগুলি লুকানো থাকে এবং *ওয়াইল্ডকার্ড ব্যবহার করার সময় অন্তর্ভুক্ত করা হবে না , উদাহরণস্বরূপ আপনি যদি আপনার হোম ডিরেক্টরিতে সমস্ত ফাইল গ্রেপ করতে চান তবে আপনার প্রয়োজন:

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

যে সমস্যার মুখোমুখি হচ্ছিলাম তা হ'ল আমি কমান্ড প্রম্পট থেকে একটি খাঁটি বিল্ড তৈরি করতে সক্ষম হয়েছি তবে এক্সিলিপস থেকে নয় clগ্রহণের জন্য আমার পক্ষে কী কাজ করেছে তা হল আমি রান কনফিগারেশনটি জেডিকে-র ভিতরে না রেখে জেআরডি ফোল্ডারে দেখিয়েছি changed জেডি কে ফোল্ডারটি কেবলমাত্র মান অনুযায়ী। এই সমাধানটি আপনার পক্ষেও কাজ করতে পারে তবে সমস্ত জাভা পাথ সঠিক থাকলে জাভা এবং জাভ্যাক পম.এক্সএমএল লক্ষ্যবস্তুতে উপস্থিত একই সংস্করণটি দেখায় তবেই চেষ্টা করুন।


এটি ছিল আমার সমস্যা এবং সমাধান।
স্কাইচান

1

আমি ডক্কুতে এই বিষয়টি মোতায়েনের মুখোমুখি হয়েছিলাম, কিছু কারণে এটি জেডিকে ১.7 নির্বাচন করছে

একটি system.propertiesফাইল তৈরি এবং সেটিংস সমস্যার java.runtime.version=1.8সমাধান করেছে। Dokku এখন জাভা সংস্করণ 8. ব্যবহার Heroku একটি JDK নির্বাচন

এর আগে আমাকে কখনই করতে হবে না ...


ইঙ্গিতটি এখনও কাজ করে। ডক্কুতে জাভা সংস্করণটি ১১ এ পরিবর্তন করতে আমাকে অনেক অনুসন্ধান করতে হয়েছিল। আপনাকে অনেক ধন্যবাদ Thank
মিস্টার ভ্যান্ডারবিল্ট

1

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

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

হ্যাঁ, সেটিংস maven.compiler.releaseএটি আমার মাভেন প্রকল্পে স্থির করেছে।
কর্টেক্স

1

ইন্টেলিজিজ ব্যবহার করে আমাকে কেবল আরেকটি (উচ্চতর) জেডিকে সংস্করণ ইনস্টল করতে হয়েছিল। আইডিই পুনঃসূচনা করার পরে, সমস্ত কিছু কাজ করে এমনকি সমস্ত নির্ভরতাও সমাধান করা হয়েছিল।


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

0

এই প্রশ্নটি ডকার সম্পর্কে স্পষ্টভাবে জিজ্ঞাসা করছিল না, তবে আমি যখন পম.এক্সএমএল ফাইলটি 1.9 টার্গেট করেছিলাম তখন একই ত্রুটি পেয়েছি ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... তবে তারপরে নিজেই "ম্যাভেন" নির্দিষ্ট করে ডকারের ধারকটির বিরুদ্ধে পরীক্ষা চালানোর চেষ্টা করেছিলেন।

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

আমার জন্য, ঠিক করাটি আমার প্রয়োজনীয় সংস্করণটিকে লক্ষ্য করা ছিল।

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(আপনি এখানে আরও শিখতে পারেন ))


0

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

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

এমন একটি ফোর্স মাভেন আপডেট করুন যা সামঞ্জস্যপূর্ণ 1.8 জার সংস্করণ নিয়ে আসবে এবং তারপরে নির্মাণের সময় রান কনফিগারেশন থেকে 1.8 এ এক্সিকিউট এনভায়রনমেন্টে জেআরই সংস্করণগুলি আপডেট করুন এবং আরএনএইচ টিপুন


0

আপনি যদি Eclipse IDE ব্যবহার করে থাকেন তবে উইন্ডো মেনুতে যান এবং পছন্দগুলি নির্বাচন করুন এবং সেখানে আপনি ইনস্টলড জেআরই অনুসন্ধান করুন এবং আপনাকে প্রকল্পটি তৈরি করতে প্রয়োজনীয় জেআরই নির্বাচন করুন


-4

আমার ক্ষেত্রে যা কাজ করেছে তা হ'ল:

আমি pom.xmlনীচের মতো প্লাগইনগুলির একটি খুললাম এবং প্রতিস্থাপন করেছি।

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

আমি উত্স এবং লক্ষ্য ট্যাগ উভয়ের সম্পাদনার আগে 1.8, আমি 1.7এটিকে পরিবর্তন করেছি এবং এটি কাজ করে।


আপনি যে পরিবর্তনটি করেছেন তা কি আপনি বুঝতে পেরেছেন বা আপনি কেবল সেরাটির প্রত্যাশায় পরিবর্তনটি করেছেন?
পোপিয়ে

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