بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل با استفاده از کلاس BufferedImage مشترک در جاوا و فریم ورک اندروید !

مدیریت گفتگو
مجتبی یگانه 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام

با کلی تلاش تونستم پروژه ی تشخیص چهره رو با Java و تحت ویندوز اجرا کنم !‌ ذهنیت ام این بود که اندروید هم جاواست دیگه !‌ فقط اندروید یک فریم ورک برای کدنویسی جاوست ( که هست ! ) که خروجی اون نرم افزار های اندروید هست و اگر بتونم تحت ویندوز پروژه رو اجرا کنم بعدا میتونم تو اندروید هم با کمی تغییر ازش استفاده کنم

در نسخه ی تحت ویندوز و با JRE ۶  پروژه رو اجرا کردم و بالاخره خروجی داد !‌ وقتی خواستم با اندروید همون کار رون انجام بدم همه چیز خوب پیش میرفت تا اینکه دیدم از کلاسی با نام BufferedImage خطا میگیره - با کمی جست و جو متوجه شدم که همه میگن باید در اندروید به جای این کلاس از BitMap استفاده کنید ! 

مشکل اینجاست که من نمیتونم متد های این کلاس ها رو باهم تطبیق بدم -  مثلا کلاس getPixels در BitMap ها نسبت به BufferedImage ها ورودی های کاملا متفاوتی داره !

پس رفتم دنبال استفاده از همون BufferedImage که تو JRE ۶ هست در اندوید !

متوجه شدم که باید JRE رو به Build Path  اضافه کنم و درکمال تعجب دیدم مشکلات حل شد

وقتی اومدم با خوشحالی برنامه رو اجرا کنم دیدم خطا میده که 

unable to execute dex: Multiple dex files define
Lfacerecognition/javafaces/EigenvalueDecomposition; [2014-12-15 02:04:19 - FaceRecog] Conversion to Dalvik format failed: Unable to execute dex:
Multiple dex files define Lfacerecognition/javafaces/EigenvalueDecomposition;

 و بازم بعد از جست و جو متوجه شدم که چون هم android x.y و هم jre اون کلاس رو دارند این خطا به وجود اومده و کامپایل پروژه ممکن نیست !‌

بازم بعد از جست و جو متوجه شدم که باید اون کلاس رو از یکی از لایبرری ها حذف کنم که تو این مورد من باید از لایبرری اندروید حدف اش کنم !‌ - ممکنه ؟

عجب سوالی شد :))

نظرات

hamidd 11 سال پیش
یعنی این کلاسه توی دو تا لایبراری وجود داره و دقیقا مسیر پکیج شون یکیه؟ مثلا هر دو شون از java.io.File ایمپورت میشن (فقط یه مثال بود)؟
hamidd 11 سال پیش
BufferedImage رو که نمیشه از فریم ورک اندروید Import کرد، فقط میشه از java.awt.image.BufferedImage ایمپورت اش کرد. یه بار پروژه رو Clean کن ببین درست نمیشه.
مجتبی یگانه 11 سال پیش
مرسی حمید جان همیشه تو سوالای سختم همراهمی D: ، دقیقا مسیر هر دو یکی هست ، یعنی هم جاوا داره java.awt و هم اندروید ! ، اما اندوید اجازه ی استفاده ازش رو نمیده ( حالا یا اینجوریه یا کلا اینجوری نیست D: ) - نتیجه این شد که از لایبرری اندروید نمیشه چیزی حذف کرد ، فقط میشه اون کلاس ها رو کپی کرد و با نام دیگه ای مثل myBufferedImage استفاده کرد ، الان Jar اون لایبرری رو دانلود کردم ، اما وقتی سورس ها رو ازش بیرون میارم ، یکم آسیب میبیین ! ، بازم در تلاش ام D:
hamidd 11 سال پیش
خواهش می کنم:) یه ابهامی برام وجود داره: اگه BufferedImage توی فریم ورک اندروید وجود داره چرا نمی شه BufferedImage رو بدون اضافه کردن JRE به Build Path ایمپورت کرد. مطمئنی BufferedImage توی فریم ورک اندروید وجود داره ؟
مجتبی یگانه 11 سال پیش
نه از Jre بازش اش میکنه ، ولی موقعی که میام کامپایل کنم به مشکل میخوره :|
Hajhosseini 11 سال پیش
من این مشکل رو زمانی داشتم که 2 تا Library به پروژه ام اد میکردم که هردو AndroidSupport V4 داشتن، و ورژن AndroidSupport این 2تا با هم فرق داشت، کاری که من کردم این بود که یکی از اندروید ساپورت هارو حذف کردم، و اون Library که اندروید ساپورت رو داشت رو به اونی که نداشت اد کردم. و البته توی کد جاواتون باید دقت کنید که از کجا دارید ایمپورت میکنید کدتون رو.امیدوارم مفید بوده باشه
مجتبی یگانه 11 سال پیش
دقیقا همین مشکل رو داریم ! ، با این تفاوت که یکی از لایبرری ها رو میتونیم حذف کنیم ، یکی رو نمیتونیم ! (لایبرری اندروید) و من باید از لایبرری جاوا استفاده کنم

پاسخ‌ها 1

مجتبی یگانه 11 سال پیش

من که نتونستم حل اش ! ، توصیه میکنم به جاش از همون BitMap استفاده کنید ! ، همه ی متد هاش رو داره ! ، با یکم تغییر :|

نظرات

Hajhosseini 11 سال پیش
Alu جان پیشنهاد من به شما روی اوردن به AndroidStudio ، که این قبیل مشکلات رو ندارست. برای من که خیلی خیلی سخت بود Change کردن، و بیشترین سختیش مقاومت کردن خودم بود، با اندروید استادیو که کد میزنم همش تو ذهنم میگم اکلیپس خیلی سر تره.ولی خوب در عمل هر کدوم یکسری قابلیت ها دارن، و با توجه به پیشنهاد و توجیهات گوگل، روی اوردن به اندروید استادیو میتونه در آینده بسیار ارزشمند باشه
مجتبی یگانه 11 سال پیش
اتفاقا منم نسخه ی فاینال اندروید استدیو رو نصب کردم تا تست کنم ، اما واقعیت اش هنوز فرصت نکردم ! ، در چند لحظه گشتن تو برنامه اش ، چیزی جز حس غربت نداشتم :| ، تغییر محیط کاری خیلی سخته ! ، اما این مورد به محیط توسعه ربطی نداشت ، کلا Eclipse حق داشت D:

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .