জাভা 1.8 ASM ClassReader ক্লাস ফাইল পার্স করতে ব্যর্থ হয়েছে - সম্ভবত কোনও নতুন জাভা ক্লাস ফাইল সংস্করণ যা এখনও সমর্থিত নয়


88

আমার ওয়েব অ্যাপ্লিকেশনটি জেডিকে ১.7 এ দুর্দান্ত চলছে তবে নিম্নলিখিত ব্যতিক্রম (১ জেটির সাথে অ্যাপ্লিকেশন সার্ভার শুরুর সময়) সাথে 1.8 এ ক্র্যাশ হয়েছে। আমি স্প্রিং সংস্করণ ব্যবহার করছি: 3.2.5।

ব্যতিক্রম:

org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet

আমি ধরে নিয়েছি যে সমস্যাটি বসন্ত এবং "asm.jar" লাইব্রেরির উপর নির্ভর করে যার কারণে এটি নির্ভর করে।

আমি কীভাবে এটি সমাধান করব?


আপনি নিজের ওয়েব অ্যাপটি জাভা 8 বা জাভা 7 হিসাবে সংকলন করছেন? যদি 8, আপনার জাভা 7 লক্ষ্য করে আপনার ক্লাসগুলি সঙ্কলন করা সম্ভব তবে এটি জাভা 8 এর অধীনে চালানো উচিত
ছাঁটাই

4
আপনি যদি জাভা 8 লক্ষ্য করতে চান তবে আপনার স্প্রিং 4
পাবলো

এটি 1.7 কে সংকলন করে তবে জাভা 8 বৈশিষ্ট্যের জন্য কোনও সমর্থন নেই। সুতরাং jdk 8 ব্যবহার করে এই ক্ষেত্রে দৃষ্টিভঙ্গি করবেন না
stanislav.chetvertkov

উত্তর:


119

@ প্রঞ্জ এবং @ পাবলো লোজনো যেমন বলেছে, আপনি জাভা 8 (- বাজারের 1.8) কোডটি সংকলন করতে চান তবে আপনার স্প্রিং 4 প্রয়োজন, তবে আপনি স্প্রিং 3.2.X এ চালানো হলে জাভা 8-তে সংকলিত জাভা 8-তে অ্যাপস চালাতে পারেন।

পরীক্ষা করে দেখুন http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html

নোট করুন যে জাভা 8 বাইটকোড স্তর (-টরসেট 1.8, -সোর্স 1.8 দ্বারা প্রয়োজনীয়) কেবলমাত্র স্প্রিং ফ্রেমওয়ার্ক 4.0 হিসাবে সম্পূর্ণ সমর্থনযোগ্য। বিশেষত, স্প্রিং ৩.২ ভিত্তিক অ্যাপ্লিকেশনগুলিকে একটি জাভা ৮ রানটাইমটিতে স্থাপন করা হতে পারে, এমনকি লক্ষ্য হিসাবে সর্বাধিক জাভা with সহ সংকলন করা দরকার। জাভা 8 ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য দয়া করে স্প্রিং 4 এ আপগ্রেড করুন।


এটি কাজ করেছে, ধন্যবাদ! কোনও কারণে আমি বসন্ত 4 প্রকাশটি মিস করেছি :-)
stanislav.chetverskov

4
আমার সাথে এটিও ঘটে, যদিও কোডটি এখনও 1.7 টার্গেট করার জন্য সংকলিত হয়েছে, আমি কেবল রানটাইমটি জাভা হিসাবে পরিবর্তন করেছিলাম 8 কোনও ধারণা?
ওরশেলা

4
ItayK এর উত্তর দেখুন, বসন্ত 3..২.৮ এ একটি বাগ রয়েছে এবং এর নীচে সঠিক asm সংস্করণ ব্যবহার করা হবে না, এটি ৩.২.৯- এ ঠিক করা হয়েছে
ক্রিসমার্ক

4
৩.২.১০ এ অন্য একটি বাগ ঠিক করা হয়েছিল, সুতরাং আমি ৩.২.১6 বা সর্বশেষতম যা যা তা নিয়ে যাওয়ার পরামর্শ দিই recommend এখানে মূল স্প্রিং বাগ যে স্থির হয়ে আছেন: মেটাডেটা পড়া জাভা জন্য এ এস এম ব্যবহার না করা উচিত * এবং javax * (JDK 8 বিশেষ) ধরনের।। জাভা 8: ASM5 দর্শক ইন্টারফেসের INVOKESPECIAL / স্ট্যাটিক পার্স জন্য প্রয়োজন বোধ করা
michaelok

ধন্যবাদ ,, এটি <groupId> org.apache.maven.plugins </groupId> <artifactId> মাভেন-কম্পাইলার-প্লাগইন </ সার্টিফিকেট << কনফিগারেশন> <সোর্স> 1.7 </s>> <target> 1.7 </ <GroupId> org.apache.maven.plugins </groupId> <artifactId> মাভেন-কম্পাইলার-প্লাগইন </ ਆਰটিফ্যাক্ট আইডি> <কনফিগারেশন> <সোর্স> 1.8 </source> <target> 1.8 < / লক্ষ্য> </
আশুতোষ এস

67

আপনি যদি এই-ত্রুটিটির মুখোমুখি হয় -আপনি-বাজারের 1.7 দিয়ে সংকলন করেন তবে দয়া করে মনে রাখবেন যে এটি স্প্রিং ফ্রেমওয়ার্কের একটি বাগের কারণে যা এএসএম শ্রেণিবিন্যাসকে জেডকে ক্লাসগুলি (জাভা। * বা জাভ্যাক্স। *) লোড করে, যা অবশ্যই, -টারাগেট 1.8 দিয়ে সংকলিত

এটি, বসন্ত 3..২.৮ এবং তারপরে পুরানো এএসএম সংস্করণের সাথে মিলিত, যা ১.৮ শ্রেণীর ফাইলগুলি পার্সিং সমর্থন করে না, এছাড়াও এই ত্রুটির কারণ হতে পারে।

সমস্যা সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে: https://jira.spring.io/browse/SPR-11719

এটি স্প্রিং ফ্রেমওয়ার্ক সংস্করণ 3.2.9 এ স্থির করা উচিত, যা শীঘ্রই প্রকাশিত হওয়ার কথা।

অবশ্যই, স্প্রিং ফ্রেমওয়ার্ক 4 এ আপগ্রেড করাও সমস্যার সমাধান করবে, কারণ এটি ইতিমধ্যে এএসএমের একটি নতুন সংস্করণ রয়েছে।

যাইহোক, যদি কোনও কারণে আপনি এখনও সংস্করণ 4 এ আপগ্রেড করতে না পারেন তবে বিকল্পটি আছে (তাড়াতাড়ি) তা জেনে রাখা ভাল।


6
স্প্রিং ৩.২.৯ এ আপগ্রেড করা আমাকে সহায়তা করেছিল।
চেঞ্জিজ

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি স্পষ্টভাবে ব্যাখ্যা করে যে সমস্যাটি কী
উইলা

4
স্প্রিং ৩.২.৫ সহ এই সমস্যাটি ছিল, পরিবর্তিত হয়ে ৩.২.৯ হয়েছে এবং সমস্যার সমাধান হয়েছে। নিখুঁত উত্তর.
সালভাতোরালব

ভাই, খুশী আমার বসন্ত 4 এ আপগ্রেড করার দরকার নেই Great দুর্দান্ত উত্তর!
রুডলফসন

0

যদি আপনি জাভা 8 বা পরবর্তী সংস্করণ ব্যবহার করেন তবে আপনার স্প্রিং সংস্করণটি আপগ্রেড করতে হবে এবং স্প্রিং সংস্করণটি 4.xxx হওয়া উচিত


0

আমি একই সমস্যা ছিল এবং এটি সমাধান। আমি জাভা 8 এর সাথে স্প্রিং 3.x ব্যবহার করছি 8 যদি উপরের সমাধানগুলি কাজ না করে তবে জারগুলি পরিবর্তন করুন এবং অনুসন্ধান করুন যে সেই জারগুলি আপনি ব্যবহার করছেন জাভা সংস্করণের সাথে সামঞ্জস্যপূর্ণ কিনা। স্প্রিং 3.x জাভা 8 এর সাথে সামঞ্জস্যপূর্ণ নয়।


0

এই সমস্যাটি সমাধান করার জন্য স্প্রিং 4 জাভা 8 এর জন্য ব্যবহার করা যেতে পারে। আমি এটি পরীক্ষা করেছি এবং এটি কাজ করে। এই সমস্যাটি বসন্ত ৩.২.৯-রিলে সংস্করণ থেকে স্থির করা হয়েছে।

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