"প্রোগ্রাম টাইপ ইতিমধ্যে উপস্থিত" এর অর্থ কী?


103

আমি অ্যান্ড্রয়েড স্টুডিওতে একটি অ্যাপ তৈরির চেষ্টা করছি। ইক্লিপস পাহোর পাঠাগারটিকে গ্রেড নির্ভরতা হিসাবে যুক্ত করার পরে (বা এটি মাভেন? আমি অ্যান্ড্রয়েড বাস্তুতন্ত্রের ক্ষেত্রে নতুন), আমি নিম্নলিখিত ত্রুটি পেয়েছি:

Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
Message{kind=ERROR, text=Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat, sources=[Unknown source file], tool name=Optional.of(D8)}

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

অন্যান্য স্ট্যাকওভারফ্লো উত্তরগুলি থেকে, আমি সংগ্রহ করেছি যে এটির আমার গ্রেড ফাইলটির সাথে কিছু করার আছে। সুতরাং, এখানে অ্যাপ্লিকেশন / বিল্ড.gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "---REDACTED FOR PRIVACY---"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support:support-media-compat:27.1.0'
    implementation 'com.android.support:support-v13:27.1.0'
    implementation 'com.google.android.gms:play-services-maps:12.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2'
    implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.0.2'
}

repositories {
    maven { url 'https://repo.eclipse.org/content/repositories/paho-releases/' }
} 

উত্তর:


73

এই সমস্যাটি সাধারণত নামকরণ বিরোধ থেকে আসে, আপনার ক্ষেত্রে সমর্থন-ভি 4 লাইব্রেরি যা বেশ কয়েকটি লাইব্রেরি দ্বারা ব্যবহৃত হয়।

খুঁজতে নির্ভরতা তালিকা মডিউলের জন্য app(অ্যাপ্লিকেশানের জন্য ডিফল্ট মডিউল এর নাম) আমরা কি করতে পারেন gradlew app:dependenciesসমস্ত লাইব্রেরি একটি তালিকা উদ্ধার করে।

আমরা এটি support-v4ব্যবহার করে দেখতে পেয়েছি :

//short version of the dependencies list highlighting support-v4
+--- com.android.support:support-v13:27.1.0
|    \--- com.android.support:support-v4:27.1.0

+--- com.google.android.gms:play-services-maps:12.0.1
|    +--- com.google.android.gms:play-services-base:12.0.1
|    |    +--- com.google.android.gms:play-services-basement:12.0.1
|    |    |    +--- com.android.support:support-v4:26.1.0 -> 27.1.0 (*)

+--- org.eclipse.paho:org.eclipse.paho.android.service:1.0.2
|    +--- com.google.android:support-v4:r7  // <- problem here

আমরা দেখতে পাচ্ছি যে মানচিত্রের সমর্থন-ভি 4 সমর্থন-ভি 13 থেকে সরবরাহিত সংস্করণটি ব্যবহার করবে।

আমরা আরও দেখতে পাই যে গ্রহন গ্রন্থাগারটি অন্য সংস্করণ (r7 ??) ব্যবহার করছে।

আপনার সমস্যা সমাধানের জন্য, আপনি support-v4এই গ্রহন গ্রন্থাগার থেকে মডিউলটিকে এভাবে বাদ দেওয়ার চেষ্টা করতে পারেন :

implementation ('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') {
    exclude module: 'support-v4'
}

তারপরে আপনার অ্যাপ্লিকেশনটি সংকলন করতে সক্ষম হওয়া উচিত।

বিটিডব্লিউ আপনার যত্ন নিতে হবে যে আপনার কোডটি পরীক্ষা করে গ্রহন মডিউলটি ভেঙে না যায়।


4
আমার সম্পূর্ণ ভিন্ন সংঘর্ষ হয়েছিল, তবে আপনার উত্তর আমাকে আসলে ধারণা পেয়েছিল যে কোনও কিছুতে সংঘর্ষ হতে পারে। আমি 2 টি পৃথক প্লেয়ার ব্যবহার করেছি যা অ্যান্ড্রয়েড এক্সো প্লেয়ার ব্যবহার করে। কোনও দিন কাউকে সাহায্য করতে পারে। ধন্যবাদ!
ভাকো

@ ভুকো আপনি সংঘর্ষকে কীভাবে চিহ্নিত করেছেন?
বীর রাজপুরোহিত

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

85

আমার জন্য কেবল প্রকল্পটি পরিষ্কার করা সমস্যার সমাধান করেছে

টার্মিনাল ব্যবহার :

./gradlew clean

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

Build (menu) > Clean Project

4
সঠিক! সম্ভবত এটি অ্যান্ড্রয়েড স্টুডিওর বাগ।
aulphn

4
অ্যান্ড্রয়েড স্টুডিওতে মেনু থেকেও করা যেতে পারে Build > Clean Project
সালভাডর

4
অ্যান্ড্রয়েড স্টুডিওর File > Invalidate Caches / Restart > Invalidate and restartজন্যও সমস্যাটি ঠিক করা যেতে পারে
সর্বোচ্চ

এই উত্তরটি ত্রুটির অর্থ কী, প্রশ্নটি যা জিজ্ঞাসা করছে তা ব্যাখ্যা করে না।
ব্যবহারকারী2102929

আমি উত্তরটি অনেক মাস পরে লিখেছিলাম, কেবলমাত্র ভবিষ্যতের পাঠকদের সাথে আমার অভিজ্ঞতা ভাগ করে নেওয়ার জন্য .. তারা দীর্ঘ সমাধান এবং ব্যাখ্যা খুঁজে পেতে পারে, তবে এটি একটি সাধারণ পদক্ষেপের মাধ্যমে সমাধান করা যেতে পারে .. @ ব্যবহারকারী2102929
মুজতবা এফআর

13

অফিসিয়াল ডক থেকে

রানটাইম ক্লাসপথে যদি কোনও ক্লাস একাধিকবার উপস্থিত হয়, আপনি নীচের মত একটি ত্রুটি পাবেন:

Program type already present com.example.MyClass

এই ত্রুটিটি নিম্নলিখিত অবস্থার একটি কারণে সাধারণত ঘটে থাকে:

  • একটি বাইনারি নির্ভরতা এমন একটি লাইব্রেরি অন্তর্ভুক্ত করে যা আপনার অ্যাপ্লিকেশনটিতে সরাসরি নির্ভরতা হিসাবে অন্তর্ভুক্ত থাকে।

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

  • আপনার অ্যাপ্লিকেশনটিতে স্থানীয় বাইনারি নির্ভরতা এবং একই লাইব্রেরিতে একটি দূরবর্তী বাইনারি নির্ভরতা রয়েছে।

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


অনেক ধন্যবাদ. 1 ম আমার জন্য ইস্যু কারণ ছিল। আমি অন্য একটি লাইব্রেরির ভিতরে থাকা পুনরাবৃত্ত লাইব্রেরির জন্য কেবল সংকলন ব্যবহার করেছি, যা নির্মাণের সময় বিল্ডটি বাদ দেবে।
দৈত্য মস্তিষ্ক

4

এটা আমার এছাড়াও ঘটেছিল কিন্তু আমার ক্ষেত্রে, আমি বিভিন্ন নির্ভরতা একই বর্গ ব্যবহার আছে অন্তর্ভুক্ত করা চেষ্টা debugApi& Apiতাই অ্যান্ড্রয়েড স্টুডিও ডুপ্লিকেট শ্রেণী হিসেবে চিহ্নিত করেছে, তাই আমি ব্যবহার দ্বারা সমস্যা সমাধান debugApi& releaseApiবিল্ড বৈকল্পিক উপর ভিত্তি করে বিভিন্ন নির্ভরতা অন্তর্ভুক্ত করা।


2

অ্যাপ্লিকেশন স্তরের গ্রেডল ফাইলটিতে সহায়তা লাইব্রেরি যুক্ত করুন

বাস্তবায়ন 'com.android.support:design:27.1.1'


2

আমার ক্ষেত্রে এর অর্থ এটি আমার কাছে 2 * .jar ফাইল বা 2 টি লিবারি আছে যেখানে সোর্স কোড রয়েছে। উদাহরণস্বরূপ: আমার 2 টি youtube.jarআছে app/libaryএবং module/libary একবার রিডানডেন্ট মুছুন এবং এটি ঠিক হয়ে যাবে


1

এই সমস্যাটির জন্য সমস্যা - আপনি যদি অন্য লাইব্রেরিতে নির্ভরতা হিসাবে মডিউল এবং একই লাইব্রেরি হিসাবে গ্রন্থাগারটি ব্যবহার করেন।

উদাহরণ: লাইব্রেরিএ মডিউল হিসাবে আমদানি করা হয়েছে এবং একই লাইব্রেরিএ অন্য কোনও লাইব্রেরি মডিউলে নির্ভরতা হিসাবে যুক্ত হয়েছে।

এই সমস্যাটি কীভাবে সমাধান করবেন?

সমাধান 1 -> আপনি উভয় রাখতে চাইলে -> লাইব্রেরিএ মডিউলের প্যাকেজের নামটি কেবল রিফেক্টর করুন

সমাধান 2 -> লাইব্রেরিএ নির্ভরতা অপসারণ এবং মডিউলটি ব্যবহার করুন

বাস্তবায়ন প্রকল্প (': লাইব্রেরিএ')


0

আমি আশা করি এটি কারও সাহায্য করবে, একটি বিল্ড> ক্লিন প্রকল্প আমার পক্ষে কাজ করেছিল।


4
এই সমাধানটি ইতিমধ্যে অন্য উত্তরের মন্তব্যে প্রস্তাবিত হয়েছে
ফ্যানিক

0

আমার একই সমস্যা আছে তবে অ্যান্ড্রয়েড স্টুডিও 4.0.০.২ থেকে ৪.১ এ আপডেট করার পরে আমার প্রকল্পের অভ্যন্তরীণ লাইব্রেরিতে। আমি অনেক কিছুই সাফল্য ছাড়াই অনুসন্ধান করেছি এবং চেষ্টা করেছি। আপনারা যদি আমার মত একই মামলা করেন তবে আমি আশা করি এই উত্তরটি সাহায্য করতে পারে। আমি কী করেছি:

  1. Clean Projectতারপর Rebuild Project- ব্যর্থ
  2. Invalidate Caches / Restart - ব্যর্থ
  3. গ্লোবাল গ্রেডল ক্যাশে মুছে ফেলুন ( /User/username/.gradle/cachesম্যাকোসের জন্য) - ব্যর্থ
  4. কমান্ডটি দিয়ে টার্মিনালের মাধ্যমে অ্যাপ নির্ভরতাগুলি তদন্ত করা হচ্ছে: ./gradlew app:dependencies বা গ্রেডল সরঞ্জাম উইন্ডোর মাধ্যমে: project->Tasks->android->androidDependencies- সন্দেহজনক কিছুই নয়
  5. মুছুন .gradleএবং .ideaআমার মূল প্রকল্পটি থেকে - সাফল্য (যদিও আমি নিশ্চিত না যে আমার উভয় মুছতে হবে কিনা। সম্ভবত তাদের মধ্যে একটিরও মুছে ফেলুন এটিও কাজ করে)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.