খারাপ শ্রেণীর ফাইল যাদু বা সংস্করণ


101

আমি ইতিমধ্যে জানি যে প্রশ্নটি ইতিমধ্যে খুব প্রায়ই এবং উত্তর জিজ্ঞাসা করা হয়েছে, তবে আমি যে উত্তর পেয়েছি তার মধ্যে কেউই আমার সমস্যার সমাধান করেনি।

এটি ত্রুটি:

Error:Gradle: Execution failed for task ':ffcommunity:preDexDebug'.
 com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    D:\Android SDK\sdk\build-tools\20.0.0\dx.bat --dex --output D:\Users\ReVo\Documents\IntelliJ IDEA\FFCommunity\ffcommunity\build\intermediates\pre-dexed\debug\bananaquery-2ee85432877a057e7414910b8127805535139d5d.jar D:\Users\ReVo\Documents\IntelliJ IDEA\FFCommunity\ffcommunity\libs\bananaquery.jar
Error Code:
    1
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:665)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
        at com.android.dx.command.dexer.Main.access$600(Main.java:78)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:596)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
        at com.android.dx.command.dexer.Main.run(Main.java:230)
        at com.android.dx.command.dexer.Main.main(Main.java:199)
        at com.android.dx.command.Main.main(Main.java:103)
    ...while parsing com/comuf/revonline/bananaquery/BananaInsert.class
    1 error; aborting

ত্রুটিটি হ'ল bad class file magic (cafebabe) or version (0034.0000)

আমি একই দিনে বহুবার সমস্যা ছাড়াই অ্যাপ্লিকেশনটি তৈরি করেছি এবং কার্যকর করি তবে এখন এই বার্তাটি প্রতিবারই ব্যর্থ হয়।


প্রজেক্ট এসডিকে হয় Android API 19 Platformএবং প্রকল্প স্তর হয় 1.7

CompileSDK হয় 19এবং বিল্ডটুলস ভার্সন হয় '20.0.0'

সংকলন বিকল্পগুলি:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

এবং dependenciesআমি আছে:

compile files('libs/bananaquery.jar')

গ্রন্থাগারটি Android API 19 Platformপ্রকল্প স্তরের সাথে এসডিকে দিয়ে তৈরি 1.7

আমার .jarফাইলটি libs/ফোল্ডারের ভিতরে রয়েছে ।

আমি ইন্টেলিজ আইডিএ 14 প্রিভিউ ব্যবহার করি, এটির কারণ হতে পারে? ইন্টেলিজ আইডিইএ 13 এর সাথে এটি "গ্রেডল সিঙ্ক" এ আটকে রয়েছে

সংকলন ফাইলগুলি অকেজো হতে পারে যেহেতু আমার compile fileTree(dir: 'libs', include: ['*.jar'])খুব বেশি


হাই আমার একই সমস্যা আছে তবে প্রজেক্ট সংকলকটি 1.7 এ স্থাপন করা সাহায্য করে না, দয়া করে আপনি কি একবার দেখে নিতে পারেন? stackoverflow.com/questions/29098038/...
Csabi

সমস্যাটি অনেক কিছু হতে পারে, আমি 1.7 ব্যবহার করেছি কারণ আমি জাভা 1.7 ব্যবহার করছিলাম, এটি 1.6 এ পরিবর্তন করার চেষ্টা করুন
মার্কো এসিয়েরানো

হাই আমি পুরো প্রকল্পটি ১.6 করার চেষ্টা করেছিলাম এটি কোনও সাহায্য করে না, আমি আগে সেই লাইব্রেরিটি ব্যবহার করছিলাম, আমি জজার ফাইলটি আরও নতুন সংস্করণে আপডেট করেছি, এটি উচ্চতর জাভা দিয়ে সংকলিত সমস্যা হতে পারে?
চিসাবি

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

উত্তর:


95

আমার JAVA_HOMEপরিবর্তনশীলটি জাভা ১.৮ এ পরিবর্তিত হয়েছে এবং আমার অ্যান্ড্রয়েড প্রকল্পের নির্ভরতা হিসাবে খাঁটি জাভা মডিউলটি সংকলন করার সময় আমি এই ত্রুটি বার্তাটি পেয়েছি।

জাভা মডিউলটির build.gradle

apply plugin: 'java'

সমাধান # 1: দ্রুত একটি নোংরা

আমি আমার JAVA_HOMEপিছনে 1.7 এ সেট করে এটি ঠিক করেছি :

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

সমাধান # 2: সংকলক সংস্করণ পরিবর্তন করুন:

তার বিল্ড.gradle এ এই নির্দিষ্ট মডিউলটির জন্য 1.7 এ ফিরে যান

apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7

4
গ্রেডলের পরীক্ষামূলক সংস্করণে বাক্য গঠনটি হ'ল:compileOptions.with { sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 }
স্টিফেন কায়সার

সলিউশন 2 আমার পক্ষে কাজ করেছে, যদিও অ্যান্ড্রয়েড স্টুডিওটি ধূসর-রেখাযুক্ত উত্সটি সামঞ্জস্যতা এবং টার্গেটের সাথে সামঞ্জস্যতা বলেছে যে "দায়িত্ব অর্পণ ব্যবহৃত হয় না"
কোডিএফ

39

ঠিক আছে, আমার খারাপ।

প্রজেক্ট এসডিকে বিভাগে, আপনি যখন একটি যুক্ত করেন তখন আপনার সমস্ত সরবরাহ করা Android SDKউচিত Java SDKএবং আমার সমস্ত অ্যান্ড্রয়েড এসডিকে জাভা 8 এসডিকে হিসাবে ব্যবহার করে যাতে এটি প্রকল্পের স্তরটি হলেও ভুল সংস্করণ সহ শ্রেণি ফাইলগুলি তৈরি করে 1.7(কেন জানি না, আমার ধারণা যা প্রকল্প স্তরের দ্বারা সবকিছুই বেছে নেওয়া হয়েছিল)।

এখন আমি এসডিকে ( java version "1.x.0"অংশটি) পরিবর্তন করেছি

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

এবং এটি জরিমানা সংকলন বলে মনে হচ্ছে।

আজকের আগে যে কারণটি কাজ করেছিল তা হ'ল আমার এসডিকে ছিল 1.8এবং নাAndroid API x


আমি একই সমস্যা আছে. আমার এটি কোথায় পরিবর্তন করা উচিত? ধন্যবাদ
রুপেশ

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

আপনি পছন্দ পর্দার কথা বলছেন ??
রুপেশ

3
প্রকল্পের কাঠামো উইন্ডোটি খুলুন> "প্রজেক্ট এসডিকে" বার্তাটি দিয়ে কোথায় নির্বাচন করা উচিত আপনার যে এসডিকে প্রয়োজন তা নির্বাচন করুন (আপনার কোড বা বহিরাগত লাইব সংকলনের জন্য ব্যবহৃত এসডিকে সংস্করণ)। আপনার যদি আমার একই সমস্যা হয় তবে আপনার অ্যান্ড্রয়েড এসডিকে লাইনটি পরীক্ষা করে "সম্পাদনা করুন" এ ক্লিক করুন। আপনাকে অন্য একটি প্যানেলে স্থানান্তরিত করা হবে, যেখানে আপনার জাভা এসডিকে রয়েছে, 1.7 নির্বাচন করুন (বা আপনার সংস্করণটি সংকলন করতে হবে)
মার্কো এসিয়েরানো

2
মডিউল সেটিংসে গিয়ে এবং
জাডা

27

যদি লোকেরা @ মারকো এসিরোনোর ​​উত্তরটি কিছুটা অস্পষ্ট হিসাবে খুঁজে পায় তবে সমাধানটি হ'ল আপনি জাভা with দিয়ে তৈরি করছেন এটির উচ্চতর সংস্করণ নয় তা নিশ্চিত করা।

অ্যান্ড্রয়েড স্টুডিওর জন্য, এতে পরিবর্তন File -> Project Structure -> SDK Location -> JDK Locationকরুন jdk1.7.x। কমান্ড লাইনের জন্য, java -versionফলাফলগুলি নিশ্চিত করুন java version "1.7.x"


আমি ইন্টেলিজ আইডিএ ব্যবহার করছিলাম তাই আমার ক্ষেত্রে অ্যান্ড্রয়েড এসডিকে যুক্ত করার সময় আমাকে সঠিক জাভা এসডিকে স্থাপন করতে হয়েছিল ... (আপনি কেবল একটি অ্যান্ড্রয়েড মডিউলটিতে জাভা 1.x নির্বাচন করতে পারবেন না অন্যথায় এটি অ্যান্ড্রয়েড শ্রেণি দেখতে পাবে না)
মার্কো এসিয়ানোরো

15
কেন আমরা জাভা 8 ব্যবহার করতে পারি না?
সুজয়


3

প্রতিটি বিল্ড.গ্রেড ফাইলে আপনার সমস্ত মডিউল জাভা সংস্করণ জাভা 1.7 এ পরিবর্তন করুন।

প্লাগইন যা গ্রন্থাগার এবং অ্যাপ্লিকেশন হয়

compileOptions{
    sourceCompatibility=JavaVersion.VERSION_1_7
    targetCompatibility=JavaVersion.VERSION_1_7
}

এবং জাভা মধ্যে

sourceCompatibility= 1.7
targetCompatibility= 1.7

আমার একমাত্র কাজটি করার দরকার ছিল। ধন্যবাদ
চিসকো

2

এই সমস্যাটি ঘটে যখন আপনি a ব্যবহার করেন .jar এমন ফাইল ব্যবহার করেন যা জাভা 6 বা তার বেশি কোনও বৈশিষ্ট্য ব্যবহার করে না তবে জাভা 6 বা তার বেশি ব্যবহার করে নির্মিত হয়েছিল।

আপনি যে নির্মিত তাহলে .jarতারপর আপনি যে ফাইলটি পরিবর্তন কিছু প্রয়োজন হবে না Gradleবা ProGuardবা Compiler Version। সমাধানটি খুব সহজ, কেবল সেই .jarফাইলটি আবার তৈরি করুন তবে জাভা 5 বা তার চেয়ে কম ব্যবহার করুন

আরও বিশদ


আমার ক্ষেত্রে এটি .aar ফাইল। আমার কি করা উচিৎ?
জিভিশর্মা

1

আমার অনুরূপ সমস্যা ছিল, আমি আমার অগ্রগতি আপগ্রেড করে সমাধান করেছি। এই আদেশ দ্বারা আপনার অগ্রবর্তী সংস্করণ পেতে

java -jar ~/android-sdks/tools/proguard/lib/proguard.jar 

এখান থেকে সর্বশেষ প্রগাওয়ার্ড.জার ফাইলটি পান ( http://proguard.sourceforge.net )

বিদ্যমান। অ্যান্ড্রয়েড-এসডিএস / সরঞ্জাম / প্রগুয়ার্ড / লিব / প্রগুয়ার্ড.জারকে নতুন .jar ফাইলের সাথে প্রতিস্থাপন করুন।

আশা করি এটি আপনাকে সহায়তা করবে। আপনি যদি জাভা 8 ব্যবহার করেন তবে আপনার 5.x কোজ প্রগুয়ার্ড 4.x আপগ্রেড করা উচিত 4.x জাভা 8 সমর্থন করে না।


@ রুকিগুই জাভা সংস্করণটি 1.7 এ ফিরে আসার চেষ্টা করুন, এটি আমার জন্যও কাজ করেছিল।
SpaceMonkey

ইঙ্গিতটির জন্য ধন্যবাদ, আমি লাইব্রেরিগুলি ট্রান্সজিটিভ নির্ভরতার সাথে অন্তর্ভুক্ত করে পুনরায় সংকলন করতে হয়েছিল, এটি এখানে লিখেছি uc-mobileapps.com/index.html%3Fp=509.html রেফারেন্সের জন্য, যেহেতু সংস্করণগুলি বেশ খানিকটা পরিবর্তিত হয়েছে
রুকিগুই

1

নেটবিন থেকে অ্যান্ড্রয়েড স্টুডিওতে একটি স্ব-তৈরি লাইব্রেরি যুক্ত করার চেষ্টা করার সময়ও একইরকম সমস্যা হয়েছিল। উত্স- এবং অ্যান্ড্রয়েড স্টুডিওতে টার্গেট সামঞ্জস্যতা এবং নেটবিনে উত্স / বাইনারি ফর্ম্যাটটিকে জাভা ১.7 এ সেট করুন the

অ্যান্ড্রয়েড স্টুডিওতে:

প্রকল্পের কাঠামো -> মডিউল / অ্যাপ -> স্বত্ব -> উত্স- এবং লক্ষ্যমাত্রা 1.7

নেটবিনে:

ফাইল -> প্রকল্পের সম্পত্তি -> উত্স -> উত্স / বাইনারি ফর্ম্যাট 1.7

তারপরে আপনার নেটবিন প্রজেক্টটি পরিষ্কার করুন এবং তৈরি করুন এবং জাজারটিকে "এনবিপ্রোজ / ডিস্ট" থেকে "অ্যাপ / লিবিজে" অনুলিপি করুন


0

মামলার সমাধান ভাগ করুন যদি কেবল জাভা 8 ইনস্টল হয়, কেবল জাভা সংকলক স্তরটি 1.7 এ সেট করুন এবং তারপরে প্রকল্পটি পুনর্নির্মাণ ঠিক করা উচিত।


0

তৃতীয় পক্ষের গ্রন্থাগারটি ব্যবহার করার সময় আমি ত্রুটি পেয়েছি। উপরে উল্লিখিত প্রশ্ন অনুসারে, উপরের স্ট্যাক ট্রেস বার্তা অনুযায়ী গ্রন্থাগারটি প্রতিস্থাপন করা প্রয়োজন:

        ...
    ...while parsing com/comuf/revonline/bananaquery/BananaInsert.class
    ...

উপযুক্ত সংস্করণ সহ।

প্রশ্নের সাথে সম্পর্কিত, bananaquery.jarজাভা সামঞ্জস্যপূর্ণ সংস্করণ দ্বারা প্রতিস্থাপন করা হয়।

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