java.lang.UnsupporterClassVersionError: .class ফাইলে খারাপ সংস্করণ নম্বর?


140

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

$ javac -version
javac 1.5.0_18

$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)

এবং জাভা লাইব্রেরির বৈশিষ্ট্যগুলির জন্য অ্যালিপসে চেক করুন, আমি পেয়েছি 1.5.0_18

অতএব, আমাকে অন্য কোনও উপসংহারে পৌঁছাতে হবে, নিজেই একটি শ্রেণীর অভ্যন্তরীণ, ব্যতিক্রম ছুঁড়ে ফেলছে ?? এটা কি সম্ভব?


2
আপনার কি অন্য কোথাও লাইব্রেরির সংকলিত সংস্করণ রয়েছে যা আপনার ক্লাসপথে প্রথমে থাকতে পারে?
জেফ স্টোরি

ভাল ধারণা, কিন্তু না। আমি 'অনুসন্ধান ব্যবহার করে একটি চেক করেছি। -নম '* .জার' | xargs JARs এর সাথে lib ফোল্ডার থেকে সনাক্ত করে। তদুপরি, আমি কি মনে করি না যে গ্রহপঞ্জি ক্লাসস্প্যাথ ব্যবহার করেছিল? অন্য কোন ভাল পরামর্শ?
grmn.bob

আমি কীভাবে এই সিআরসি কোডটি পুনরায় তৈরি করতে চাইছি সেমিডেমিতে এই ফাইন্ড-নেম '* .জার' কমান্ডটি কীভাবে ব্যবহার করব ... এবং তার জন্য আমাকে এই সেন্টিমিডিকে গুলি চালানো দরকার ..... javalobi.org/java/forums /t103334.html.....my jdk সি তে রয়েছে: \ প্রোগ্রাম ফাইলগুলি \ জাভা \ jdk1.6.0_31
শিক্ষার্থী

উত্তর:


185

আমি শিখেছি যে এর মতো ত্রুটি বার্তাগুলি সাধারণত সঠিক। যখন ত্রুটিটি বলে যা করা হচ্ছে তা আপনার মনে (আপনার মনে) থাকতে পারে না, আপনি অন্য কোনও অঞ্চলে সমস্যার জন্য শিকারে যান ... কেবল কয়েক ঘন্টা পরে এটি খুঁজে পাওয়া যায় যে মূল ত্রুটির বার্তাটি সত্যই সঠিক ছিল।

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

প্রশ্নযুক্ত প্রকল্পের জন্য, প্রকল্পের বৈশিষ্ট্যগুলি (সাধারণত Alt + Enter), জাভা সংকলক বিভাগটি পরীক্ষা করুন। এখানে 1.6 সংকলন করার জন্য কনফিগার করা একটি প্রকল্পের চিত্র রয়েছে তবে কেবল 1.5 টি জেআরই রয়েছে।

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


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

3
আপনার কাছে জেডিকে (যার উত্স রয়েছে) থাকলে আপনার একলাসে কিছু ব্রেকপয়েন্ট যুক্ত করতে সক্ষম হওয়া উচিত এবং আশা করা যায় এটি কোন শ্রেণিতে লোড করার চেষ্টা করছে। সবচেয়ে সহজ উপায় হ'ল অসমর্থিত ক্লাস ভার্সন এরিয়ার (বা একটি এক্সপ্লিস ব্যতিক্রম ব্রেকআপপয়েন্ট, 'জে!' আইকন) এর জন্য কনস্ট্রাক্টরের একটি ব্রেকপয়েন্ট হ'ল, তারপরে আপনি কীভাবে এটি পেয়েছিলেন তা পরীক্ষা করতে পারেন।
জোশুয়া ম্যাককিনন

ঠিক আছে. আমি বিল্ডিংয়ের একজন বিশেষজ্ঞকে পেয়েছি এবং তিনি আমার কমান্ড লাইনের মতোই গ্রহনকে একই জেআরইতে নির্দেশ করতে সক্ষম হন। আমি তখন ১. against এর বিরুদ্ধে পুনর্নির্মাণ করেছি এবং ১.6 এর বিপরীতে দৌড়েছি এবং এটি সব কাজ করছে। স্পষ্টতই, আমি 1.5 ছাড়া কিছুই না পেয়ে ভুল ছিলাম। তিনি আমাকে কোথায় দেখবেন তা দেখিয়েছিলেন। সহায়তার জন্য ধন্যবাদ - এখন আমি আমার পরবর্তী সমস্যার দিকে এগিয়ে আছি! :)
grmn.bob

2
আমারো একই ইস্যু ছিল. আমি যে ভুলটি করেছিলাম তা হ'ল আমি 1.5 জেআরই এবং 1.6 সংকলক ব্যবহার করছি। যা অসমর্থিত শ্রেণিবিন্যাস ত্রুটি সমাধান করে নি। সুতরাং আমি আমার গ্রহণে 1.6 জেআরই ইনস্টল করেছি এবং 1.6 সংকলক ব্যবহার করেছি। তারপর সবকিছু ঠিকঠাক কাজ শুরু।
ভানচিনাথন চন্দ্রশেকরন

1
আমি এটি দ্বিতীয়বার উত্সাহিত করতে চাই, কারণ এটি দ্বিতীয়বার আমি সমস্যাটি পেয়েছি, অনুসন্ধান করেছি, এই উত্তরটি খুঁজে পেয়েছি এবং এটি সঠিক হয়েছে। > _ <
AlbeyAmakiir

9

আপনি কি পুরো "ক্লিন" করার চেষ্টা করেছেন এবং তারপরেই আবার Eclipse (প্রকল্প-> ক্লিন ...) পুনর্নির্মাণ করেছেন?

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

আপনি যদি আপনার প্রকল্পটিতে ডান ক্লিক করেন তবে "সম্পত্তি" এ যান এবং তারপরে "জাভা বিল্ড পাথ" এ যান, কোনও ট্যাবগুলির অধীনে কোনও সন্দেহজনক এন্ট্রি রয়েছে? এটি মূলত আপনার ক্লাসস্প্যাট।

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

আপনার কাছে অবশ্যই একটি বাসি। ক্লাস ফাইল রয়েছে যা আপনি কোথাও রেখেছিলেন বা আপনি যে জাভা ব্যবহার করছেন তার সংস্করণগুলিতে একটি সংকলন-সময় / রান-টাইম মিল নেই।


হ্যাঁ (সম্পূর্ণ পরিষ্কার); এটি চেষ্টা করেনি (সিএমডি লাইন থেকে প্রকল্প); সম্ভবত / না (আমি গ্রহন "জাভা বিল্ড পাথ" থেকে এন্ট্রি সরিয়েছি); এটি করেছেন (জেআরইএস - এটিই আমি সংস্করণ পেয়েছি #)।
grmn.bob

5

আপনি কি গ্রহণের সাথে সংকলন করেছেন? এটি একটি পৃথক সংকলক (জাভ্যাক নয়) ব্যবহার করে। এটির ফলে এই ত্রুটিটি হওয়া উচিত নয় (যদি সবকিছু সঠিকভাবে কনফিগার করা থাকে) তবে আপনি জাভ্যাকের সাহায্যে এটি সংকলনের চেষ্টা করতে পারেন।

যদি এটি সমস্যাটি স্থির করে থাকে, তাহলে দেখার চেষ্টা করুন যে গ্রহপসের কিছু ভুল সংকলক সেটিংস রয়েছে। বিশেষত এটি জাভা 5 লক্ষ্য করুন।


এটাই আমি শিখছি। আমি একইভাবে দুটি টুকরো তৈরির চেষ্টা করতে যাচ্ছি (সেন্টিমিটার লাইন এবং / অথবা গ্রহপ)।
grmn.bob

1
থিলো ধন্যবাদ, আমি আজ গ্রহন এবং জাভা এবং শ্রেণিকরণ সম্পর্কে অনেক কিছু শিখেছি। এবং পিপড়া সম্পর্কেও একটু ।
grmn.bob

2

আমিও একই ত্রুটি পেয়েছি। এর কারণ আমি মাভেন ব্যবহার করে প্রকল্পটি সংকলন করছি। আমার কাছে JAVA_HOME JDK7 এর দিকে ইঙ্গিত করেছিল এবং তাই জাভা 1.7 সংকলনের জন্য ব্যবহৃত হচ্ছিল এবং প্রকল্পটি চালানোর সময় আমি JDK1.5 ব্যবহার করছিলাম। .Classpath ফাইলটিতে নীচের প্রবেশদ্বার পরিবর্তন করা বা স্ক্রিনশটের মতো গ্রহনটিতে পরিবর্তন সমস্যার সমাধান করেছে।

classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5

বা হিসাবে গ্রহনের রান কনফিগারেশন পরিবর্তন এখানে চিত্র বর্ণনা লিখুন


1

আপনার প্রকল্পের কোনও জার ফাইল যা জাভার উচ্চতর সংস্করণের জন্য সংকলিত হয়েছে তা পরীক্ষা করে দেখুন। এগুলি যদি আপনার নিজস্ব লাইব্রেরি হয় তবে আপনি জাভাকে লক্ষ্য সংস্করণ বৈশিষ্ট্য পরিবর্তন করে এটি ঠিক করতে পারেন

<javac destdir="${classes.dir}"
            debug="on" classpathref="project.classpath" target="1.6">

0

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


0

সর্বদা সুস্পষ্ট জন্য পরীক্ষা করুন। আমি এই ত্রুটিটি একবার পেয়েছিলাম যখন সার্ভারের যুক্তকরণ এবং ক্রিয়াটি সরিয়ে ফেলার জন্য আমি দুর্ঘটনাক্রমে ভুল সংস্থানটি ধরলাম। এটি উপেক্ষা করা সহজ হতে পারে।


0

প্রকল্পের নির্দিষ্ট সেটিংস ফাইলগুলি (एक्লিপস ওয়ার্কস্পেস / প্রজেক্ট ফোল্ডার /। সেটিংস /) প্রকল্প ফোল্ডার থেকে মোছাও তা করবে। স্পষ্টতই, আমাদের মুছে ফেলার পরে একটি প্রকল্প পরিষ্কার এবং বিল্ড করা উচিত।


0

জাভা ১.7 ব্যবহার করার জন্য প্রকল্পটি পরিবর্তন করা: এটি কাজের জন্য এই পদক্ষেপগুলি অনুসরণ করুন:

  • সংকলক সম্মতি স্তর পরিবর্তন করুন
  • আপনার প্রকল্পগুলি JRE / JDK কে একই স্তরের কিছুতে পরিবর্তন করুন (আমার ক্ষেত্রে 1.7)
  • আপনার প্রকল্প দ্বারা রেফারেন্সযুক্ত সমস্ত প্রকল্পে একই পরিবর্তন করুন
  • জেআরই / জেডিকে (বা একই স্তরের) ব্যবহার করতে আপনার রান / ডিবাগ কনফিগারেশনটি পরিবর্তন করুন

কাজ করছে না?

  • প্রকল্প বিন ডিরেক্টরি মুছুন
  • পরিষ্কার
  • পুনর্নির্মাণের

এখনও কাজ করছে না?

আপনার প্রকল্পের ডিরেক্টরিতে: সম্পাদনা করুন / সেটিংস / org.eclipse.jdt.core.prefs> আপনার লক্ষ্য স্তরটি প্রয়োগ হয়েছে কিনা তা নিশ্চিত করুন

শুভকামনা!


0

আমি সার্ভারের জন্য প্রয়োজনীয় জেয়ার পরিবর্তন করে এই সমস্যাটি সমাধান করেছি (আমার ক্ষেত্রে টমক্যাট হয়)। ইক্লিপসে সার্ভার ট্যাব থেকে, সার্ভারে ডাবল ক্লিক করুন (সার্ভার কনফিগারেশনের জন্য পৃষ্ঠা খোলার জন্য), রানটাইম পরিবেশে ক্লিক করুন, তারপরে প্রয়োজনীয় জেআরই পরিবর্তন করুন

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