কীভাবে জাভা.এল.এক্স.সমর্থিত ক্লাস ভার্সন এরর ঠিক করবেন: অসমর্থিত মেজর.মিনোর সংস্করণ


1571

আমি নোটপ্যাড ++ আমার সমস্ত ইন-ওয়ান সরঞ্জাম সম্পাদনা, রান, সংকলন ইত্যাদি হিসাবে ব্যবহার করার চেষ্টা করছি

আমি জেআরই ইনস্টল করেছি এবং আমি .../binডিরেক্টরিতে আমার পাথ ভেরিয়েবল সেটআপ করেছি ।

আমি যখন নোটপ্যাড ++ এ আমার "হ্যালো ওয়ার্ল্ড" চালাই, আমি এই বার্তাটি পাই:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

আমি মনে করি এখানে সমস্যাটি সংস্করণগুলি সম্পর্কে; জাভার কিছু সংস্করণ পুরানো বা খুব নতুন হতে পারে।

  1. আমি কীভাবে এটি ঠিক করব?
  2. আমি কি জেডিকে ইনস্টল করব এবং জেআরইয়ের পরিবর্তে আমার পাথের ভেরিয়েবলটি সেটআপ করব?
  3. PATHজেআরই বা জেডিকে ভেরিয়েবলের মধ্যে পার্থক্য কী ?

আপনি কি পাশাপাশি জেডিকে ইনস্টল করেছেন? jre হ'ল জাভা রানটাইম পরিবেশ, জাভা অ্যাপস তৈরি করতে আপনারও জেডিকে দরকার
সাইপ্রাস

হ্যাঁ আমি করেছি এবং এখন আমার পথের চলকটি jdk কোথায় তা নির্দেশ করে। তবুও আমার এখনও এই "অসমর্থিত ছোটখাটো সংস্করণ 51.0" ত্রুটি রয়েছে কি আপনি কি মনে করেন যে আমার জেডিপির পুরানো সংস্করণটি ইনস্টল করা উচিত? আমি jdk 1.7.0 ব্যবহার করছি
এরজান

20
আজকাল ওএসএক্সে অদ্ভুত অ্যাপল জাভা 6 এবং ওরাকল জাভা 7 পরিস্থিতির কারণে আমার যখন সমস্যা হয়েছিল তখন ম্যাক ওএস এক্সে আমার সাথে এটি ঘটেছিল। সংক্ষিপ্ত সংস্করণ: জেডিকে with সহ সংকলন করুন, জেডিকে with সহ চালান, এটি পান।
ওয়ারেন পি

7
জাভাতে ClassName মূল সূত্র দিয়ে শুরু করা উচিত;)
আশীষ প্যানারি

5
: এল ক্যাপ্টেন জন্য, এই উত্তর আমার জন্য এটি সংশোধন করা হয়েছে stackoverflow.com/a/34201991/1615594
tsuz

উত্তর:


1938

দেখানো সংস্করণ নম্বরটি JRE এর সংস্করণ বর্ণনা করে যা ক্লাস ফাইলটির সাথে সামঞ্জস্যপূর্ণ।

রিপোর্ট করা প্রধান সংখ্যাগুলি হ'ল:

Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

(সূত্র: উইকিপিডিয়া )

আসল সমস্যাটি সমাধানের জন্য আপনার জাভা কোডটি জাভা জেআরই এর নতুন সংস্করণ সহ চালানোর চেষ্টা করা উচিত বা জাভা সংকলকটির পূর্ববর্তী জাভা সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ কোড তৈরি করতে নির্দেশক জাভা সংকলককে লক্ষ্য পরামিতি নির্দিষ্ট করতে হবে।

উদাহরণস্বরূপ, জাভা 1.4 এর সাথে সামঞ্জস্যপূর্ণ ক্লাস ফাইলগুলি তৈরি করতে, নিম্নলিখিত কমান্ড লাইনটি ব্যবহার করুন:

javac -target 1.4 HelloWorld.java

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


167
"দেখানো সংস্করণ নম্বরটি জাভা কোডটি সংকলন করতে ব্যবহৃত হলে কোন সংস্করণটি বর্ণনা করে।" না এটা না। এটি জেআরই-র সংস্করণ দেখায় যে ক্লাস ফাইলটি সামঞ্জস্যপূর্ণ। ব্যবহার ক্রস সংকলন অপশন আপনি 1.1 একটি বর্গ সংস্করণ (1.7 মাধ্যমে) সঙ্গে কম্পাইল কোডে একটি 1.7 JDK ব্যবহার করতে পারেন।
অ্যান্ড্রু থম্পসন

85
এই উত্তরটি প্রশ্ন জিজ্ঞাসা না করে এটি ঠিক করতে কিভাবে ব্যাখ্যা করে না?
জোনাথন লেইং

7
এই সরাসরি অন্ধকার থেকে একটি পূর্ববর্তী সংস্করণে সংকলন জন্য একটি চমৎকার সমাধান stackoverflow.com/a/16345710/2091700
Alphaaa

19
IN ग्रहण প্রকল্প => অনুসন্ধানসমূহ => জাভা সংকলক; আপনার জেআর বা জেডকে অনুযায়ী সংস্করণে "সংকলক সম্মতি স্তর" সেট করুন। আমার হিসাবে, এটি জেয়ের 1.6 এর জন্য 1.6
স্যাম

5
এটি সংঘটিত হতে পারে যখন সংকলক উত্সটি বর্তমানে জেআরই / জেডিকে সংকলন করে অ-সম্মতিতে সেট করা আছে। উদাহরণস্বরূপ, আমি গ্রহনটি। সেটিং ফোল্ডার, org.eclipse.jdt.core.compiler.comp Equipment = 1.7, org.eclipse.jdt.core.compiler.source = 1.7, org.eclipse.jdt.core.compiler থেকে নীচের মানগুলি পেয়েছি .codegen.targetPlatform = 1.7। এবং আমার সংকলকটি ছিল 1.6.0_32। মানগুলি ১.6 এ পরিবর্তন করার পরে সমস্যার সমাধান হয়েছিল। ইস্যু সম্ভূত পর আমি একটি ভিন্ন কর্মক্ষেত্র থেকে প্রকল্পের যেখানে আমি JDK 1.7 ব্যবহার করছিলেন :( কপি
গণ

366

java.lang.UnsupportedClassVersionError সংকলনের সময় উচ্চতর জেডিকে এবং রানটাইমের সময় কম জেডিকে হওয়ার কারণে ঘটে।


11
+1: /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
জাভাকের

1
আমি কীভাবে উপরের পরিবর্তন করতে পারি?
অঙ্কুর রায়যানী

8
প্রকল্প -> সম্পত্তি -> জাভা সংকলক প্রকল্প নির্দিষ্ট সেটিংস সক্ষম করে। তারপরে কমপ্লায়ার কমপ্লায়েন্স লেভেলটি 1.7, 1.6 বা 1.5 তে নির্বাচন করুন, আপনার অ্যাপটি তৈরি করুন এবং পরীক্ষা করুন test
বিবেক কুমার রায়

আমি যখন জাভা 7 এ চলে এসেছি, কোনওভাবেই গ্রহনটি জাভা 6 তে চালানোর চেষ্টা চালিয়ে গেল ... কেন তা জানা নেই। পুরানো জেডি কে আমার জন্য কৌশলটি আনইনস্টল করলেন।
এইচডিভ

9
@ezdazuzena এটি করতে ব্যবহার করুন sudo update-alternatives --config java
থরবজর্ন রাভন অ্যান্ডারসন

115

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


3
গ্রহণে, কিছু সময় প্রকল্পের দিকগুলিও যথাযথ জাভা সংস্করণে পরিবর্তন করা প্রয়োজন।
বিলাল মির্জা

6
ধন্যবাদ। এটি লক্ষণীয় যে Eclipse এর ডিফল্ট সম্পাদন পরিবেশ (জেআরই যা বিল্ডের পথে যায়) সেট করা একটি পৃথক সেটিং। আমি জেআরই সেট করেছিলাম তবে সংকলক সম্মতি স্তরের নয়; এটি এটি স্থির।
wchargin

এবং আপনি কীভাবে ত্রুটি বার্তাটি থেকে সিদ্ধান্তটি আঁকেন যে বিকল্পটি সেট করার জন্য এটিই সঠিক জায়গা?
আলেকজান্ডার

হতে পারে এটি: স্ট্যাকওভারফ্লো.com / প্রশ্নগুলি / 7073485/… আপনি যদি পিপীলিকা এবং গ্রহন ব্যবহার করছেন তবে সহায়তা করতে পারে।
OuuGiii

প্রশ্নটি নোটপ্যাড ++ সম্পর্কে তবে গ্রহন নয়।
gotwo

60

চিন্তা করবেন না, আমি এটি সমাধান করেছি।

এটি আসলে সহজ - আপনার একই সংস্করণ সহ দুটি জেআরই / জেডিকে ইনস্টল করতে হবে।

জেআরই 6 -> জেডিকে 6

জেআরই 7 -> জেডিকে 7

ইত্যাদি।


29
জাভা 7 কোনও সমস্যা ছাড়াই 6 পরিচালনা করতে পারে।
দামিয়েনিক্স

@ ডিডিয়িনিক্স আপনি সম্ভবত উল্লেখ করতে চান যে জাভা 7 জেআরই কোনও সমস্যা ছাড়াই একটি জাভা 6 সংকলিত ক্লাস পরিচালনা করতে পারে, অন্যথায় আপনার বক্তব্য বিভ্রান্তির দিকে নিয়ে যায়।
ফ্রন্টিয়ার

43

এই ত্রুটিটির অর্থ আপনি একটি জাভা "শ্রেণি" ফাইলটি লোড করার চেষ্টা করছেন যা আপনি ইনস্টলের চেয়ে জাভার নতুন সংস্করণ দিয়ে সংকলন করেছিলেন।

উদাহরণস্বরূপ, আপনার .classফাইলটি JDK 7 এর জন্য সংকলন করা যেতে পারে এবং আপনি এটি জেডিকে 6 দিয়ে চালানোর চেষ্টা করছেন।

সুতরাং সমাধান হয় হয়:

  • আপনার জাভা রানটাইম আপগ্রেড করুন বা
  • আপনার স্থানীয় জাভা সংকলক (যদি আপনার কাছে থাকে) ব্যবহার করে আপনার কাছে উত্স থাকলে ক্লাসটি পুনরায় কম্পাইল করুন।

    জাভাক ফাইলনাম.জভা

বিকাশকারীদের জন্য, যদি অন্য বিকাশকারী একটি। ক্লাস ফাইলে চেক করেন এবং এটি আপনার চেয়ে জাভাটির একটি নতুন সংস্করণ পেয়েছে তবে এটি ঘটতে পারে!


22

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

যেমন আপনি পাচ্ছেন

Unsupported major.minor version 51.0

এবং সংস্করণ 51.0 J2SE 7 এর সাথে মিলেছে আপনি সম্ভবত জাভা 7 তে আপনার কোডটি সংকলন করেছেন এবং এটি একটি নিম্ন সংস্করণ ব্যবহার করে চালানোর চেষ্টা করছেন। কি java -versionপ্রদর্শন করে তা পরীক্ষা করে দেখুন। এটি জাভা 7 সংস্করণ হওয়া উচিত। PATH / জাভাহোমে যথাযথ পরিবর্তন না করা হলে। অথবা আপনি কোডটি চালনার চেষ্টা করছেন একই সংস্করণ দিয়ে সংকলন করতে পারেন। কনফিগারেশনগুলি বিভ্রান্ত হলে আপনি সর্বদা পরম পাথ /home/user/jdk1.7.0_11/bin/javacএবং দিতে পারেন /home/user/jdk1.7.0_11/bin/java


18

ম্যাকের ক্ষেত্রেও আমার একই অবস্থা ছিল এবং নিম্নলিখিত প্রক্রিয়াটি আমার পক্ষে কাজ করেছিল:

টার্মিনালে, টাইপ করুন

vi ~/.profile

তারপরে ফাইলটিতে এই লাইনটি যুক্ত করুন এবং সংরক্ষণ করুন

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

যেখানে আপনার কম্পিউটারে সংস্করণটি হ'ল যেমন 1.7.0_25

সম্পাদক থেকে প্রস্থান করুন, তারপরে নীচের কমান্ডটি টাইপ করুন এটি কার্যকর হয়ে উঠবে

source ~/.profile 

তারপরে ফলাফলটি পরীক্ষা করতে জাভা-রূপান্তর টাইপ করুন

java -version 

.profileফাইল কি ?

.Pofile ফাইল একটি লুকানো ফাইল। এটি একটি alচ্ছিক ফাইল যা সিস্টেমটিকে জানায় যে ব্যবহারকারী যখন এটির প্রোফাইল ফাইলটি লগ ইন করা হয় তখন তাকে চালানোর আদেশ দেয় For উদাহরণস্বরূপ, যদি আমার ব্যবহারকারীর নামটি ব্রুনো হয় এবং / ব্যবহারকারী / ব্রুনো / তে একটি প্রোফাইল ফাইল থাকে তবে এর সমস্ত বিষয়বস্তু রয়েছে লগ ইন প্রক্রিয়া চলাকালীন কার্যকর করা হবে।

সূত্র: http://computers.tutsplus.com / টিউটোরিয়ালস / স্পিড- আপ- আপনার- টার্মিনাল- ওয়ার্কফ্লো- উইন্ডো-কম্যান্ড-এ্যালিয়াসস- এবং- প্রোফাইলে - ম্যাক 30515


16

Eclipse এর মেনু উইন্ডোতে -> পছন্দসমূহ -> জাভা -> সংকলক এছাড়াও "প্রকল্প নির্দিষ্ট সেটিংস কনফিগার করুন" পরীক্ষা করে দেখুন।

যদি আপনার একই জাভা সংস্করণে ত্রুটি থাকে তবে: আপনার প্রকল্পের বিল্ড ফোল্ডারটি ম্যানুয়ালি মুছতে চেষ্টা করুন। তারপরে Eclipse পুনরায় চালু করুন।


14

আপনার জাভা 7 তে কিছু জেআর লাইব্রেরি সংকলিত থাকতে পারে এবং জাভা রানটাইম হিসাবে আপনার কাছে কেবল জাভা 6 রয়েছে। এটি কিছু নতুন লাইব্রেরির সাথে ঘটতে পারে।


14

সর্বাধিক সাধারণ সমস্যাটি হল আপনার JAVA_HOMEভেরিয়েবলটির ভুল কনফিগারেশন যা আপনার একাধিক ইনস্টল করা থাকলে ডান জাভা ডেভেলপমেন্ট কিট লাইব্রেরিটির দিকে নির্দেশ করা উচিত।

এসডিকে জাভা ফোল্ডারটি কোথায় রয়েছে তা সন্ধান করতে নিম্নলিখিত কমান্ডগুলি চালান:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian / Ubuntu-

আপনি কোন জাভা (ওপেনজেডক) ইনস্টল করেছেন তা পরীক্ষা করতে, এর মাধ্যমে পরীক্ষা করুন:

dpkg -l "openjdk*" | grep ^i

বা:

update-java-alternatives -l

এটি পরিবর্তন করতে, ব্যবহার করুন:

update-alternatives --config java

sudoপ্রয়োজনে উপসর্গ

বিকল্প জাভা সংস্করণ নির্বাচন করতে।

বা ইনস্টল করার জন্য কোনটি উপলব্ধ তা পরীক্ষা করুন:

apt-cache search ^openjdk

sudoপ্রয়োজনে উপসর্গ

তারপরে আপনি ইনস্টল করতে পারেন, উদাহরণস্বরূপ:

apt-get install openjdk-7-jre

sudoপ্রয়োজনে উপসর্গ

ফেডোরা, ওরাকল লিনাক্স, রেড হ্যাট

এর মাধ্যমে উপযুক্ত প্যাকেজ ইনস্টল / আপগ্রেড করুন:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

java-1.7.0-openjdkপ্যাকেজে কেবল জাভা রানটাইম এনভায়রনমেন্ট রয়েছে। আপনি যদি জাভা প্রোগ্রামগুলি বিকাশ করতে চান তবে java-1.7.0-openjdk-develপ্যাকেজটি ইনস্টল করুন ।

বাসদ

ফ্রিবিএসডি পোর্টস সংগ্রহে একটি ওপেনজেডকে 7 প্যাকেজ রয়েছে যা ওপেনজেডকে 7 নামে পরিচিত যা সম্ভবত পুনরায় কনফিগার করা দরকার।

দেখুন: ওপেনজেডিকে উইকি পৃষ্ঠা

উইন্ডোজ

কেবল ওরাকল সাইট থেকে উপযুক্ত জাভা এসই বিকাশ কিট লাইব্রেরি ইনস্টল করুন বা ইনস্টল করুন

জেনকিন্স

আপনি যদি জেনকিনসের সাথে এই সমস্যাটি অনুভব করছেন তবে দেখুন:

তবে জাভা (নতুন) এর সাথে সঠিক সংস্করণ নির্বাচন করা update-alternativesউচিত।


ক্লৌডেরার সাথে একটি ক্লাস্টারে স্পার্ক পরিষেবা যুক্ত করার পরে হোস্টে স্পার্ক 2-শেল ব্যবহার করার চেষ্টা করার সময় এই উত্তরটি আমার পক্ষে কাজ করেছিল।
পরিবর্তন করুন

12

আমি যখন আমার অ্যাপ্লিকেশনটি তৈরি করতে একটি পিপীলিকার স্ক্রিপ্ট নিয়ে কাজ করছিলাম তখন আমি একই সমস্যার মুখোমুখি হয়েছি।

আমি আমার অ্যাপ্লিকেশন বিকাশের জন্য Eclipse ব্যবহার করি এবং আমি প্রকল্পের বিল্ড বৈশিষ্ট্যে সংকলক সংস্করণটি পরিবর্তন করেছি। তবে এটি আমার পক্ষে কার্যকর হয়নি। তারপরে আমি জানতে পারলাম যে আমি পিপীলিকার স্ক্রিপ্টে সংকলক সংস্করণ সরবরাহ করতে পারি।

আমি এন্টি স্ক্রিপ্টটি যে বিভাগে জাভা ফাইলগুলি সংকলন করেছি সেখানে পরিবর্তিত করেছি।

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

অসমর্থিত বড় ছোট ছোট সমস্যাটি সমাধান করার জন্য এটি আমার পক্ষে কাজ করেছিল।


12

আমি JDK 1.7 ইনস্টল করার পরে , সমস্যার সমাধান হয়ে গেল।


12

১.7-এ লেখা একটি প্রকল্প নিয়ে আমি একই সমস্যা পেয়েছি এবং 1.6 সালে কার্যকর করার চেষ্টা করেছি।

Eclipse এ আমার সমাধান:

  • আপনার প্রকল্পের বৈশিষ্ট্যগুলিতে -> জাভা বিল্ড পাথ -> গ্রন্থাগারগুলিতে ডান ক্লিক করুন

  • আপনার জেআরই সিস্টেম লাইব্রেরি নির্বাচন করুন এবং ডানদিকে সম্পাদনা ক্লিক করুন , এবং জেআরই লক্ষ্য চয়ন করুন।

  • এখন বাম দিকে জাভা সংকলক যান, এবং আপনার লক্ষ্যে সংকলক সম্মতি স্তর পরিবর্তন ।

এটা আমার জন্য কাজ করেছে।


11

বেশিরভাগ লোকের উত্তর হিসাবে, জাভা প্রোগ্রামটি এটি সংকলন করা হয়েছে তার চেয়ে জাভার পুরানো সংস্করণে চলছে। পিছনের সামঞ্জস্যের জন্য এটি "ক্রসকম্পল করা" হওয়া দরকার। এটিকে অন্য উপায়ে বলতে গেলে উত্স এবং লক্ষ্যযুক্ত জাভা সংস্করণগুলির মধ্যে একটি মিল নেই mat

অ্যাকলিপস মেনুতে বিকল্পগুলির পরিবর্তনের মূল পোস্টারটির উত্তর দেয় না, যিনি বলেছিলেন যে তিনি / তিনি গ্রহনটি ব্যবহার করছেন না। ওপেনজেডিকে জাভ্যাক সংস্করণ ১.7 এ, আপনি যদি পরামিতি ব্যবহার করেন -sourceএবং আপনি সংকলনের সময় লক্ষ্য সংস্করণটির (যেটি পুরানোটি -target) rt.jar -file সরবরাহ করেন তবে আপনি 1.6 এর জন্য ক্রসকম্পল করতে পারেন । যদি আপনি প্রকৃতপক্ষে 1.6 জেআরই ইনস্টল করেন তবে আপনি তার ইনস্টলেশনটি নির্দেশ করতে পারেন (উদাহরণস্বরূপ, / উসরা / লিব / জেভিএম / জাভা-6-openjdk-i386/jre/lib/rt.jar উবুন্টু, / usr / jdk / jdk1 এ। OS.০_60০ / জেআর / লিবিব / আরটি.জার স্পষ্টতই সুনোস-এ। দুঃখিত, আমি জানি না এটি উইন্ডোজ সিস্টেমে কোথায় রয়েছে)। তাই ভালো:

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

দেখে মনে হচ্ছে আপনি কেবল ইন্টারনেট থেকে rt.jar ডাউনলোড করতে পারেন এবং এটিতে নির্দেশ করতে পারেন। এটি যদিও খুব মার্জিত নয়:

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java

10

এর উপর ভিত্তি করে...

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

Eclipse এ, প্যাকেজ এক্সপ্লোরার এর প্রকল্পে ডান ক্লিক করুন:

বিল্ড পাথ -> বিল্ড পাথ কনফিগার করুন

অধীনে:

জাভা বিল্ড পথ -> লাইব্রেরি -> লাইব্রেরী যোগ করুন -> JRE সিস্টেম লাইব্রেরী -> ইনস্টল JREs -> Search

অনুসন্ধান শেষ হওয়ার পরে উপলব্ধ তালিকায় লাইব্রেরী নির্বাচন করে প্রয়োজনীয় জেআরই যুক্ত করুন।


10
  • আপনি যদি মাভেন ব্যবহার করেন তবে আপনার জাভা সংকলনের স্তরটি সেট করুন। একটি কম্যান্ড লাইন খুলুন এবং java -versionআপনার সংকলন স্তরের জন্য লিখুন :

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

  • আপনি যদি ইন্টেলিজ আইডিইএ ব্যবহার করেন তবে প্রকল্প → ফাইলসেটিংসনির্বাহের স্থাপনা তৈরি করুনসংকলকজাভা সংকলক নির্বাচন করুন । তারপরে এই চিত্রটির মতো বাইট কোডটি 1.7 হিসাবে পরিবর্তন করুন:

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


পম পরিবর্তন করার পরে আমার একটি মাভেন ক্লিন ইনস্টল করা দরকার।
জো বরিস্কো

10

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

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

আপডেট: সেট sourceএবং targetকরতে 1.8, যদি আপনি JDK 8 ব্যবহার করছেন।


ক্রস-কমপ্লিট করতে প্লাগইনটি কীভাবে ব্যবহার করতে হবে তার একটি স্নিপেট লিঙ্কটি দেখার / খোলার পরিবর্তে খুব ভাল হবে
কোডিং_আইডিয়ট

8

অ্যাকলিপস থেকে পিঁপড়া চালানোর সময় আমার একই ত্রুটি বার্তা ছিল, তবে এখানে উল্লিখিত অন্যান্য সমাধানগুলি আমার সমস্যার সমাধান করেনি। মজার বিষয় হ'ল উইন্ডোজ কমান্ড লাইন থেকে পিঁপড়া চালানো ভাল চলছিল, তাই এটি Eclipse এর মধ্যে একটি কনফিগারেশন সমস্যা হতে হয়েছিল।

দেখা গেল যে Eclipse এর অধীনে আপনি পরিবেশটি নির্দিষ্ট করতে পারবেন যা পিপীলিকার সাথে চলতে হবে এবং এটি JDK এর পরিবর্তে JRE হিসাবে সেট করা হয়েছিল।

  • এতে যান: চালান -> বাহ্যিক সরঞ্জাম -> বাহ্যিক সরঞ্জামগুলির কনফিগারেশন ...
  • আপনার প্রকল্পের জন্য পিপীলিকা build.xML নির্বাচন করুন (যদি আপনার একাধিক প্রকল্প থাকে)
  • ট্যাব 'জেআরই' সক্রিয় করুন
  • এখানে 'আলাদা জেআরই: jre6' নির্বাচন করা হয়েছিল। আমি যখন 1.6 বা 1.7 সিরিজ থেকে এটি একটি জেডিকেতে পরিবর্তন করেছি তখন ত্রুটিটি চলে গেছে।

8

আমি কীভাবে এটি ঠিক করব?

এই ত্রুটির অর্থ হ'ল যে জেআরই আপনার শ্রেণি কোডটি কার্যকর করতে ব্যবহৃত হচ্ছে তা জাভা ব্যবহারের সংস্করণটিকে স্বীকৃতি দেয় না। সাধারণত জাভা সংস্করণ যা আপনার ক্লাস ফাইল তৈরি করে (যেমন এটি সংকলিত) এটি নতুন।

এটি ঠিক করতে, আপনি হয় পারেন

ক) আপনার জাভা সূত্রগুলি জাভা সংকলকটি চালানোর জন্য ব্যবহার করা হবে তার একই বা তার থেকেও পুরানো সংস্করণ দিয়ে সংকলন করুন। অর্থাৎ উপযুক্ত জেডিকে ইনস্টল করুন।

খ) আপনার জাভা উত্সগুলি জাভা সংকলকটির নতুন সংস্করণ দিয়ে কম্পাইলিটি মোডে সংকলন করুন। অর্থাত্ -targetপ্যারামিটারটি ব্যবহার করুন ।

গ) আপনার সংকলিত ক্লাসগুলি একটি জেআরই তে চালান যা জেডিকে ক্লাসগুলি সংকলনের জন্য ব্যবহৃত একই বা নতুন সংস্করণে তৈরি করা হয়।

আপনি বর্তমানে javac -versionসংকলক এবং java -versionরানটাইমের জন্য আপনি যে সংস্করণগুলি ব্যবহার করছেন তা যাচাই করতে পারেন ।

আমি কি জেডিকে ইনস্টল করব এবং আমার প্যাথ ভেরিয়েবলটিকে জেআরইয়ের পরিবর্তে জেডিকে সেটআপ করব?

সংকলনের জন্য অবশ্যই আপনার সুনির্দিষ্ট জেডিকে ইনস্টল এবং কনফিগার করুন।

রানটাইমের জন্য, আপনি জেডিকে বা স্ট্যান্ডেলোন জেআরই এর সাথে যেটি আসে তা ব্যবহার করতে পারেন তবে নির্বিশেষে আপনি নিশ্চিত হন যে আপনি সঠিক সংস্করণগুলি ইনস্টল করেছেন এবং আপনার প্যাথটি এমনভাবে কনফিগার করেছেন যাতে কোনও আশ্চর্যের কিছু নেই।

জেআরই বা জেডিকে প্যাথ ভেরিয়েবলের মধ্যে পার্থক্য কী?

PATH এনভায়রনমেন্ট ভেরিয়েবল আপনার কমান্ডটি সন্ধান করার জন্য কমান্ড শেলটি জানায় for আপনি যখন টাইপ করবেন java, কমান্ড শেল ইন্টারপ্রেটারটি PATHচলমান উপযুক্ত javaরানটাইম নির্বাহযোগ্য খুঁজে পেতে, বাম থেকে ডানে ভেরিয়েবলের মধ্যে নির্দিষ্ট সমস্ত অবস্থানের সন্ধান করবে । আপনার যদি জাভার একাধিক সংস্করণ ইনস্টল করা থাকে - যেমন আপনি javaPATH ভেরিয়েবলটিতে নির্দিষ্ট একাধিক স্থানে এক্সিকিউটেবল থাকে, তবে বাম থেকে ডানে যাওয়ার সময় প্রথম যেটির মুখোমুখি হয়েছিল তা কার্যকর হবে।

সংকলক কমান্ডটি কেবল জেডিকে javacদিয়ে আসে। রানটাইম কমান্ডটি জেডিকে javaনিয়ে আসে এবং জেআরই-তে থাকে।

সম্ভবত এটির একটি সংস্করণ (৫১.০ = জাভা)) javacইনস্টল করা আছে এবং আপনারও একই সংস্করণ javaইনস্টল রয়েছে, তবে এর আগের একটি পূর্ববর্তী সংস্করণ javaপ্যাথএইচ-এ প্রদর্শিত হবে এবং আপনার প্রত্যাশার পরিবর্তে অনুরোধ করা হচ্ছে inv ।


7

আপনি সংকলন করতে JDK এর একটি উচ্চতর সংস্করণ ব্যবহার করেছেন এবং JDK / JRE এর নিম্ন সংস্করণ থেকে চালানোর চেষ্টা করছেন ।

এটি পরীক্ষা করতে, সংস্করণ তথ্যটি দেখুন:

javac -version

java -version

এগুলি পৃথক হবে এবং জাভাকের একটি উচ্চতর সংস্করণ নম্বর থাকবে।

এটি পেতে, জেডিকে সংস্করণ থেকে জাভা ব্যবহার করুন বা আপনার কাছে যদি নতুন জেআরই / জেডি কে থাকে যা কাজ করে।

which javacউদাহরণস্বরূপ, আপনাকে অবস্থানটি বলবে /usr/bin/javac। সরাসরি ব্যবহার করে চালান /usr/bin/java <program>

বা আপনি স্থায়ী সমাধান হিসাবে পরিবেশের পরিবর্তনশীল সেট করতে পারেন।


6

আমি যখন জাভা to-এ ফিরে এসেছি এবং জাভা previously এর সাথে পূর্বে সংকলিত ক্লাস চালানোর চেষ্টা করছিলাম তখন আমার পক্ষে কাজগুলি ছিল পছন্দসমূহ> জাভা> সংকলক -> সম্মতি স্তরটি ১. to এ সেট করুন এবং গুরুতরভাবে "প্রকল্প সেটিংস কনফিগার করুন" ..


6

আজ, এই ত্রুটি বার্তা আমাদের হাজির হুল বিড়াল 7 উবুন্টু 12.04.2 LTS (সঠিক প্যাঙ্গোলিন):

/var/log/tomcat7/localhost.2014-04-08.log:
এপ্রিল 8, 2014 9:00:55 পূর্বাহ্ণ org.apache.catalina.core.StandardContext filterStart
মারাত্মক: EXCEPTION শুরু ফিল্টার struts2
java.lang.UnsupportedClassVersionError: নিয়ামক / ReqAccept: অসমর্থিত মেজর.মিনার সংস্করণ 51.0 (শ্রেণি নিয়ামক লোড করতে অক্ষম। রেকঅ্যাকসেপ্ট)

ভাররক্ষা আবেদন জাভা 7 কম্পাইল করা হয়।

দেখা গেল, টমক্যাট 7 পুনরায় চালু করতে কেউ "পরিষেবা টমক্যাট [স্টপ / স্টার্ট]" ব্যবহার করে,

$ PS -ef | grep java
tomcat7 31783 1 32 20:13? 00:00:03 / ইউএসআর / লিবিব / জেভিএম / ডিফল্ট-জাভা / বিন / জাভা ...
$ / ইউএসআর / লিবিব / জেভিএম / ডিফল্ট-জাভা / বিন / জাভা -
রূপান্তর জাভা সংস্করণ "1.6.0_27"

যা "অসমর্থিত মেজর.মিনার সংস্করণ 51.0" ত্রুটির কারণ ঘটায়।

টমকেট 7 পুনরায় আরম্ভ করার জন্য যখন আমরা "/etc/init.d/tomcat7 [থামুন / শুরু করুন" ব্যবহার করি, তখন সমস্যাটি সমাধান করা হয়েছিল।

$ PS -ef | grep java
tomcat7 31886 1 80 20:24? 00:00:10 /usr/local/java/jdk1.7.0_15/bin/java
$ /usr/local/java/jdk1.7.0_15/bin/java -version
জাভা সংস্করণ "1.7.0_15"


6

আমি এটি সমাধান। আমি দৌড়েছি:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

ত্রুটি বিভ্রান্তিকর Unsupported major.minor version 51.0,। এটি এই ধারণাটি দেয় যে সংস্করণ 51 (জাভা 7) সমর্থিত নয়। এবং আমাদের জাভা 6 ব্যবহার করা উচিত।

ত্রুটিটি হওয়া উচিত ছিল:

বর্তমান জাভা সংস্করণ, 50, অসমর্থিত। পরিবর্তে জাভা সংস্করণ 7 (51: 0 এবং আরও বেশি) ব্যবহার করুন `


6

আপনার জাভা ফাইলটি যে সংস্করণটি দিয়ে চালানোর চেষ্টা করছেন তার তুলনায় (নিম্ন রানটাইম সংস্করণ) আলাদা সংস্করণ (উচ্চতর সংকলক সংস্করণ) দিয়ে সংকলিত।

এটি প্রাথমিক বোঝাপড়া যা নিম্ন সংস্করণ সহ সংকলিত ক্লাসগুলি পরবর্তী উচ্চতর সংস্করণগুলিতে চালিত হওয়ার আশা করা হয়। তবে বিপরীত (উচ্চতর সংকলক সংস্করণ সহ সংকলিত এবং এটি নিম্ন রানটাইম সংস্করণ দিয়ে চালানোর চেষ্টা করা) কখনও কখনও বেশ সম্ভব হয় না।

সুতরাং আপনার প্রোগ্রামটি কার্যকর করার চেষ্টা করার সময় আপনি এই ত্রুটিটি দেখিয়েছেন। অসমর্থিত মেজর.মিনোর সংস্করণ xx

প্রশ্ন: আমি জাভা in-তে একটি অ্যাপ্লিকেশন তৈরি করেছি, তবে আমার ব্যবহারকারীরা যখন এটি চালানোর চেষ্টা করেন তারা একটি অসমর্থিত মেজর.মিনার সংস্করণ ৫১.০ ত্রুটি পান। এর অর্থ কী এবং আমি এটি সম্পর্কে কী করতে পারি?

উত্তর: আপনি জাভা in-এ জাভ্যাক ব্যবহার করে কোনও অ্যাপ্লিকেশন সংকলন করেন, ফলস্বরূপ শ্রেণিবিন্যাসগুলির মধ্যে 51.0 সংস্করণ নম্বর থাকবে। জাভা 7 এর পূর্ববর্তী সংস্করণগুলি এই সংখ্যাটি স্বীকৃতি দেয় না তাই আপনার অ্যাপ্লিকেশন চালানোর আগে আপনার ব্যবহারকারীদের জাভা 7 তে আপগ্রেড করতে হবে। আপনি যদি কোনও জাভা 7 এপিআই ব্যবহার না করে থাকেন তবে আপনি জাভ্যাক-স্টার্ট 1.6 ব্যবহার করে একটি 1.6- সামঞ্জস্যপূর্ণ ক্লাসফাইল তৈরি করতে আপনার অ্যাপ্লিকেশনটি সংকলন করতে চেষ্টা করতে পারেন। যদি আপনার অ্যাপ্লিকেশন ওয়েবস্টার্ট ব্যবহার করে স্থাপন করা হয় তবে আপনি প্রয়োজনীয় সর্বনিম্ন সংস্করণ নির্দিষ্ট করতে পারেন। আরও তথ্যের জন্য, জাভা ওয়েব স্টার্ট এবং জেএনএলপি-র ডকসগুলি এখানে দেখুন। এই ব্যবহারকারী যখন তাদের ডেস্কটপগুলিতে বর্তমানে জাভা 6 রয়েছে তাদের জন্য জাভা 7 এ অটোপেটে ট্রিগার করা হলে এই সমস্যাটি চলে যাবে। এটির জন্য সময়রেখা এখনও নির্ধারণ করা হয়নি, আমরা বিকাশকারীদের তাদের কোড এবং জেডিকে 7 এর মধ্যে যে কোনও সমস্যা সমাধানের জন্য প্রথমে সময় দিতে চাই।

(সূত্র: oracle.com ।)


5

ওহ ম্যাক ওএস একাদশ জাভাআহোম ভেরিয়েবলটি সেট করে এই সমস্যাটি সমাধান করতে সক্ষম হয়েছিল:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home

4

প্রথমে কিছু বেসিক পাওয়া যাক ...

জেআরই নেটবিয়েন্স / ইক্লিপস / স্ট্যান্ডেলোন একটি উপাদান যা আপনাকে লাইব্রেরি, জেভিএম, জাভা প্লাগইনস এবং জাভা ওয়েব শুরু সরবরাহ করতে চলেছে। দ্রষ্টব্য যে এটি কমপ্লায়ার বা ডিবাগার সরবরাহ করে না।

জেডিকে হ'ল জেআরই-এর সুপারিস্ট এবং প্রশংসক এবং ডিবাগার।

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

পরিবর্তে, জেডিকেতে আপনার পথ নির্ধারণ করুন (আমি নেটবিন ব্যবহার করি, এবং আমি নেটবিয়ানস / ইত্যাদি / নেটবিয়ানস কনফনে নেটবিয়ানস কনফ ব্যবহার করে সেগুলি সেট করেছি এবং পথটি পরিবর্তন করি)।


3

আমার ইউনিট পরীক্ষা চালানোর জন্য কমান্ড লাইন থেকে আমার প্রকল্পে একটি মাভেন সংকলন চালিয়ে যাওয়ায় আমার সমস্যা হয়েছিল; আমি যদি পরীক্ষার ক্লাসে পরিবর্তন করে ফেলেছি এবং Eclipseটিকে স্বয়ংক্রিয়ভাবে এটি পুনরায় সংকলিত করতে দিই, তবে আমি "অসমর্থিত মেজর.মিনির সংস্করণ 51.0" ত্রুটি পেয়েছি।

আমি JDK6 এবং JDK7 উভয়ই ইনস্টল করেছি, তবে আমার সমস্ত জেআরই সেটিংস পম এবং Eclipse এর প্রকল্প বৈশিষ্ট্য পৃষ্ঠা থেকে উভয়ই 1.6 পয়েন্ট করছে। ম্যাভেন আপডেট প্রকল্পের পরিমাণ এবং / বা রিফ্রেশ করে এটিকে সমাধান করা হয়নি।

অবশেষে আমি প্রকল্পটি বন্ধ করে পুনরায় খোলার চেষ্টা করেছি এবং এটি ঠিক করেছে বলে মনে হচ্ছে! আছে HTH


3

আপনি আপনার জাভা ক্লাসটি জেডিকে 7 দিয়ে সংকলন করেছেন এবং আপনি জেডিকে 6 তে একই ক্লাস চালানোর চেষ্টা করছেন।


3
  • JDK 7.0.55 ইনস্টল করুন এবং JDK 7.0.55 এর জন্য Eclipse এর জন্য জাভা সেট করুন ।
  • জেডিকে .0.০.৫৫ দিয়ে বিল্ড পাথ জেডিকে .0.০.৫৫ কনফিগার করে প্রকল্পটি তৈরি করুন।
  • মেনু দ্বারা JDK 7.0.55 জন্য অন্ধকার মধ্যে কম্পাইলার সেট উইন্ডোজ -> পছন্দসমূহ -> জাভা -> কম্পাইলার - 1.7 চয়ন।

3

উত্তরটি সমস্যার জন্য:

থ্রেড "মূল" জাভা.এলং. ব্যর্থতা

আমি একই সমস্যা ছিল। যারা এইডব্লিউএস ইক 2 উদাহরণগুলিতে এই সমস্যায় পড়েছিল এবং কোনওভাবে এখানে এই প্রশ্নে পুনঃনির্দেশিত হয়েছে। আমি তাদের জন্য উত্তর দিচ্ছি, এবং আমি কীভাবে এটি করেছি তা ভাগ করে নিতে চাই। আমি সমস্যা হচ্ছিলাম কারণ অ্যামাজন ইসি 2 উদাহরণগুলি জাভা সংস্করণ 1.7 চলছে এবং আমার প্রকল্পটি এটির সাথে সামঞ্জস্যপূর্ণ নয় কারণ আমি মাভেন ব্যবহার করছিলাম এবং এটি জাভা 1.8 এর জন্য পূর্বনির্ধারিত ছিল। সুতরাং আমি জাভা এর নতুন সংস্করণ ইনস্টল করেছি:

sudo yum -y install java-1.8.0

এবং তারপরে গুরুত্বপূর্ণ পদক্ষেপটি হল পুরানো সংস্করণটি সরিয়ে ফেলা:

sudo yum remove java-1.7.0-openjdk

নতুন সংস্করণ ইনস্টল করার পরে এটি মুছতে ভুলবেন না, অন্যথায় এটি ক্রমাগত একই পুরানো সংস্করণটি ব্যবহার করা হবে এবং আমি আশা করি এটি আপনার সমস্যার সমাধান করেছে, যা আমার ক্ষেত্রে ঘটেছে।

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