একটি গ্রীকস অ্যান্ড্রয়েড প্রকল্পে একটি লাইব্রেরি / জেআর যুক্ত করা


130

ইক্লিপসের একটি অ্যান্ড্রয়েড প্রকল্পে তৃতীয় পক্ষের লাইব্রেরি (জেআর) যুক্ত করার বিষয়ে এটি একটি দ্বি-অংশ প্রশ্ন।

প্রশ্নের প্রথম অংশটি হ'ল, যখন আমি আমার অ্যান্ড্রয়েড প্রকল্পে তৃতীয় পক্ষের জেআর (গ্রন্থাগার) যুক্ত করার চেষ্টা করি তখন আমি প্রথমে সমস্যাটি পাই

এক্সএমএল পার্স করার সময় ত্রুটি: আনবাউন্ড উপসর্গ

কারণ আমি সেই জেআর থেকে একটি শ্রেণি ব্যবহার করার চেষ্টা করছি (এবং কোনওভাবে সংজ্ঞায়িত উপসর্গ প্রয়োজন)। কি হচ্ছে?

দ্বিতীয়ত (এটি ঠিক করার পরে - উত্তরটি নীচে দেওয়া হয়েছে), আমার অ্যাপ্লিকেশনটি Android এ কাজ করে না এবং আমি ডিবাগারের (লগগ্যাট) মাধ্যমে আবিষ্কার করেছি যে আমি যে শ্রেণীরটি গ্রাস করার চেষ্টা করছি সেটির অস্তিত্ব নেই।

দ্বারা তৈরি: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView ...

কেন, যখন আমি গ্রহনে কোনও সংকলন বা লিঙ্কার ত্রুটি পাই না কেন এটি এমুলেটরটিতে এই সমস্যা আছে?

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

উত্তর:


316

অনুপস্থিত শ্রেণীর সমস্যার জন্য এখন।

আমি একটি Elpipse Java EE বিকাশকারী এবং বিল্ড পাথের "ইউজার লাইব্রেরি" পদ্ধতির মাধ্যমে তৃতীয় পক্ষের লাইব্রেরি যুক্ত করার বহু বছর ধরে অভ্যাস করছি। অবশ্যই, তৃতীয় পক্ষের লাইব্রেরি যুক্ত করার জন্য কমপক্ষে 3 টি উপায় রয়েছে, আমি যেটি ব্যবহার করি তা আমার নম্র মতে সবচেয়ে মার্জিত।

এটি অবশ্য কাজ করবে না, অ্যান্ড্রয়েডের জন্য, যার ডালভিক "জেভিএম" কোনও সাধারণ জাভা-সংকলিত শ্রেণি পরিচালনা করতে পারে না, তবে অবশ্যই এটি একটি বিশেষ ফর্ম্যাটে রূপান্তরিত করতে হবে। আপনি যখন কোনও লাইব্রেরি যুক্ত করবেন না তখন এটি ঘটবে না I'm

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

  1. আপনার হোস্ট ডেভেলপমেন্ট সিস্টেমে লাইব্রেরিটি ডাউনলোড করুন।
  2. আপনার Eclipse / Android প্রকল্পে একটি নতুন ফোল্ডার, libs তৈরি করুন ।
  3. লাইবসে ডান-ক্লিক করুন এবং আমদানি -> সাধারণ -> ফাইল সিস্টেম নির্বাচন করুন, তারপরে, লাইব্রেরির মূল ডিরেক্টরি (যেমন: আপনি এটি ডাউনলোড করেছেন) সন্ধান করতে ফাইল সিস্টেমটি ব্রাউজ করুন।
  4. ওকে ক্লিক করুন, তারপরে বাম দিকের ডিরেক্টরিতে ডিরেক্টরিটির নামটি (চেকবক্স নয়) ক্লিক করুন, তারপরে ডান ফলকে প্রাসঙ্গিক জেআর চেক করুন। এটি আপনার প্রকল্পে লাইব্রেরি রাখে (শারীরিকভাবে)।
  5. আপনার প্রকল্পে ডান ক্লিক করুন, নির্মাণের পথটি -> বিল্ড পাথটি কনফিগার করুন, তারপরে লাইব্রেরি ট্যাবটি ক্লিক করুন, তারপরে জারগুলি যুক্ত করুন ..., libs ডিরেক্টরিতে আপনার নতুন জেআর নেভিগেট করুন এবং এটি যুক্ত করুন। (ঘটনাচক্রে, এটি সেই মুহুর্তে আপনার নতুন জেআর অ্যান্ড্রয়েডে ব্যবহারের জন্য রূপান্তরিত হয়েছে)

বিঃদ্রঃ

5 টি ধাপের প্রয়োজন হতে পারে না, যদি lib ইতিমধ্যে আপনার নির্মাণের পথে অন্তর্ভুক্ত থাকে। এটি যুক্ত করার আগে তার অস্তিত্বের বিষয়টি নিশ্চিত করুন।

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

  1. আপনার অ্যান্ড্রয়েড প্রকল্পে একটি ডালভিক-রূপান্তরিত জেআর অন্তর্ভুক্ত।
  2. আপনার প্রকল্পের উত্স কোডটি বিকাশ করার সময় (যেটি সংকলন করে) তৃতীয় পক্ষের ক্লাসগুলি সন্ধানের জন্য Eclipse এ জাভা সংজ্ঞা উপলব্ধ করে।

রাশ, আপনার সম্ভবত অন্য একটি পৃথক প্রশ্ন শুরু করা উচিত। এই "উত্তর" দেখতে এখানে এক ধরণের অদ্ভুত লাগছে।
পল গ্রেগোয়ার 16

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

আমি আশা করি আনুষ্ঠানিক অ্যান্ড্রয়েড ডক্সে এটি সম্পর্কে আরও স্পষ্ট কিছু থাকত (এটি এখনও হোঁচট খায়নি) এবং অন্যান্য ফোরামে অন্য উত্তরগুলি পৌঁছে যায়, তবে কখনও সমস্যার মুখোমুখি হয় না। নোট করুন যে ব্ল্যাকবেরিতে, এই একই সমস্যাটি একটি বিশাল দুঃস্বপ্ন যা এর সমাধানের জন্য কেউ নির্ভরযোগ্য তথ্য দেয় না - আমি কী করব তা নিশ্চিত নয় sure
রাশ ব্যাটম্যান 4'10

2
হাই @ রসব্যাটম্যান আমি উপরে উল্লিখিত পদক্ষেপগুলি চেষ্টা করেছিলাম এবং আমার অ্যান্ড্রয়েড প্রকল্পে লাইব্রেরি জারটি সফলভাবে অন্তর্ভুক্ত করতে সক্ষম হয়েছি এবং তাই লাইব্রেরি ক্লাসগুলি সংকলন সময়ে আমার প্রকল্পে অ্যাক্সেসযোগ্য ছিল B তবে আমি যখন প্রকল্পটি চালাচ্ছি তখন আমার একটি ত্রুটি ঘটে আমার কনসোলে: "ডালভিক ফর্ম্যাটে রূপান্তরটি ত্রুটি 1" দিয়ে ব্যর্থ হয়েছে .. এবং আমার প্রকল্প চালু হবে না!
জেবা

নির্দিষ্ট পরিস্থিতিতে এটি কাজ করে না ... আমি ঠিক কী করেছি তা মনে নেই, libs ফোল্ডারটি মুছে ফেলেছে, এটি পুনরায় সংযোজন করেছে ... এখন আপনি যা বলেছিলেন তা সবই করেছেন, libs যোগ করুন, জারটি আমদানি করুন, পথ তৈরিতে যুক্ত করুন .. । সংকলক ত্রুটিগুলি চলে গেছে, তবে ক্লাসটি পাওয়া যায়নি এমন রানটাইম ব্যতিক্রমগুলি পাওয়া যায় :(
আইএক্সএক্স

20

আপনার তৃতীয় পক্ষের জারগুলি আপনার প্রকল্পগুলি "libs" ফোল্ডারে রয়েছে তা নিশ্চিত করুন এবং আপনার অ্যাপ্লিকেশনটি প্যাকেজ করার সময় সেগুলি .apk এ স্থাপন করা হবে। বয়ামে কিছু সমর্থন না করা থাকলে আপনি ডিভাইসে রানটাইম ত্রুটি দেখতে পাবেন, তবে এর বাইরেও আমি এর সাথে দুর্দান্ত সাফল্য পেয়েছি।


1
অভিজ্ঞতা সম্পর্কে এটি সমস্ত, এর আগে আমারও একই সমস্যা ছিল :)
পল গ্রেগোয়ার

ধন্যবাদ স্যার, তবে এটি দেখতে পেল না যে লিবস ফোল্ডারের জন্য বাহ্যিক জার ফাইলগুলির অনুলিপি আমাদের কাছে ইতিমধ্যে মাভেন সংগ্রহশালা বা অন্য কোথাও রয়েছে।
27:40 '

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

কখন যে পরিবর্তন হয়েছে? এটি আমাদের সকলের অভ্যস্ত যা একটি বিশাল পরিবর্তন।
পল গ্রেগোয়ার

5

একটি গ্রন্থাগার প্রকল্প স্থাপন করা হচ্ছে

একটি লাইব্রেরি প্রকল্পটি একটি স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রকল্প, যাতে আপনি নতুন অ্যাপ্লিকেশন প্রকল্পের মতোই একটি নতুন তৈরি করতে পারেন।

আপনি যখন লাইব্রেরি প্রকল্পটি তৈরি করছেন, আপনি কোনও অ্যাপ্লিকেশন নাম, প্যাকেজ নির্বাচন করতে পারেন এবং চিত্র হিসাবে দেখানো হয়েছে হিসাবে প্রয়োজনীয় অন্যান্য ক্ষেত্রও সেট করতে পারেন।

এরপরে, প্রকল্পের বৈশিষ্ট্যগুলি সেট করে নিন যে এটি একটি লাইব্রেরি প্রকল্প:

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


4

আপনি যদি এডিটি সংস্করণ ২২ ব্যবহার করছেন, আপনাকে প্রকল্প তৈরির পথে ক্রম ও রফতানীর ট্যাবটিতে অ্যান্ড্রয়েড নির্ভরতা এবং অ্যান্ড্রয়েড ব্যক্তিগত লাইব্রেরি পরীক্ষা করতে হবে


2

প্রথমত, অনুপস্থিত উপসর্গের সমস্যা।

আপনি যদি আপনার লেআউট ফাইলটিতে তৃতীয় পক্ষ থেকে আগত এমন কিছু গ্রাস করেন তবে আপনাকে এর উপসর্গটিও গ্রাস করতে হতে পারে, "ড্রয়েডফু:" এর মতো কিছু যা নীচে এক্সএমএল নির্মাণের বিভিন্ন জায়গায় ঘটে:

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

এটি জার থেকে বেরিয়ে এসেছে, তবে আপনাকে নতুন "xMLns: droidfu" যুক্ত করতে হবে

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

অথবা আপনি আনবাউন্ড উপসর্গ ত্রুটি পান। আমার জন্য, এটি তৃতীয় পক্ষের গ্রন্থাগারের পৃষ্ঠাগুলি থেকে সরবরাহ করা সমস্ত উদাহরণ অনুলিপি করা এবং আটকাতে ব্যর্থ হয়েছিল।


1

এক্সএমএল পার্স করার সময় ত্রুটি: আনবাউন্ড উপসর্গ

রিসোর্স '/ প্লেটেডি / রেজ' বিদ্যমান নেই।

আমি উপরের দুটি ত্রুটি পেয়েছি এবং অবশেষে আমি এটি সমাধান করেছি।

আপনার প্রকল্প -> বৈশিষ্ট্য -> জাভা বিল্ড পাথ -> গুগলাদমোব্যাডসকে (এটিকে শীর্ষে রেখে নির্বাচন করুন) রাইট ক্লিক করুন, তারপরে আপনি দৌড়ে যান এবং সমস্যার সমাধান করেছেন। এটি আমার রানটাইমের ত্রুটিটি সমাধান করা হয়েছে।


0

উত্সটি আপনার কার্যক্ষেত্রের বাইরে কোনও ফোল্ডারে রাখুন। প্রকল্প-এক্সপ্লোরারটিতে রাইটক্লিক করুন এবং "আমদানি করুন ..." নির্বাচন করুন

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

তারপরে, প্রকল্প এক্সপ্লোরারটিতে আপনার মূল প্রকল্পে ডান ক্লিক করুন। বৈশিষ্ট্যগুলি নির্বাচন করুন, তারপরে বামদিকে অ্যান্ড্রয়েড নির্বাচন করুন। নীচের লাইব্রেরি বিভাগে, "যুক্ত করুন" ক্লিক করুন ..

আপনার প্রকল্পে যুক্ত করার জন্য মানচিত্রের দৃশ্য-বেলুনের গ্রন্থাগারটি এখন পাওয়া উচিত ..


0

সূর্যগ্রহণে পাথ তৈরি করতে যান, তারপরে অর্ডার এবং এক্সপোর্ট ক্লিক করুন, তারপরে লাইব্রেরি / জারটি দেখুন এবং তারপরে প্রথমে সংকলন করতে তালিকার শীর্ষে সরাতে উপরের বোতামটি ক্লিক করুন।

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