تبلیغات
«محلی برای تبدیل بایت‌ها به آرمان‌ها» - مشکل اجرای ناقص فایل اجرایی jar و load نشدن فایل dll
 
«محلی برای تبدیل بایت‌ها به آرمان‌ها»
...گدای خاکِ درِ دوست، پادشاهِ من است (حافظ)
درباره وبلاگ


با ایجاد این وبلاگ، می خواستم قدمی هر چند کوچک در راستای تحقق آرمان‌شهر موعود بردارم؛
بلکه از این طریق، حداقل یک تیر آماده کرده باشم...

مدیر وبلاگ :
نویسندگان
بالاخره بعد از یه وقفه طولانی برگشتم به وبلاگ... همون طور که گفتم، تصمیم گرفتم تقریبا تغییر کاربری بدم... ولی نه بعنای تفکیک کامل.
بگذریم برم سر اصل مطلب:
چند وقت پیش رو یه پروژه کار میکردم که از از JNI در جاوا استفاده میکرد.
پروژه این طوری بود که در شروع، یه فرم (JFileChooser) نشون میداد؛ شبیه سازوکار browse در ویندوز. و کاربر باید یه فایل مثلا pdf رو انتخاب می‌کرد.
بعد از انتخاب فایل، یه سری پردازش‌ها انجام میشد و فایل pdf به کمک همون کتابخونه‌های dll و jar خونده میشد و نتیجه یا خروجی برنامه به شکل یک dialog یا Message Box نمایش داده میشد در انتها.
تمم برنامه بدون مشکل توی Netbeans اجرا میشد و فایل اجرایی jar ایجاد میشد، یعنی build میشد. حتی به درستی، فایهای dll و دیگر کتابخانه‌های jar که ضمیمه پروژه بود، استفاده(load) میشد. اما وقتی توی پوشه bin پروژه، روی فایل jar کلیک میکردم، قضیه فرق می‌کرد.
با double click روی فایل اجرایی jar ، اون پنجره browse باز میشد. بعد که کاربر فایل رو انتخاب میکرد، هیچ اتفاقی نمی‌افتاد!!
یعنی ظاهرا کتابخونه‌های dll که 32 بیتی بودن، به درستی load نمی‌شد. و جالب اینکه message box نهایی، نمایش داده می‌شد. یعنی این وسط، کار اصلی انجام نمیشد. مونده بودم که این دیگه چه حکایتیه! اگه فایل اجرایی درسته چرا گرافیک برنامه سر جاشه، اگه کتابخونه ها خرابه، چرا توی netbeans درست اجرا میشه.
قضیه جالب تر شد وقتی که یه فایل bat کنار فایل اجرایی jar ایجاد کردم و توش نوشتم:
java -jar test.jar
و وقتی روی فایل bat کلیک میکردم، برنامه به درستی اجرا میشد!!!! این دیگه آخر هنگ بود.
حالا اگه کسی طالب بود، کلا یه پست دیگه میذارم که چه جوری از توابع موجود در فایل dll استفاده کنیم تو خود کدهای جاوا.
اما بعد از اینکه چهار پنج ساعت وقت گذاشتم فهمیدم مشکل از چیزی به نام association هست! خلاصه سرتون رو درد نیارم، خلاصه راه حل اینه که:
از اونجایی من قبلا هم جاوا 32 بیتی و هم جاوا 64 بیتی رو نصب کرده بودم، به طور  پیش فرض موقع اجرای فایلهای jar، از اون 64بیتی
استفاده میشد(ناگفته نمونه ویندوزم 64 بیتی هست)... تنها کاری که باید میکردم این بود که این پیش فرض رو باید تغییر میدادم به 32 بیتی، چون کتابخونه‌های dll مورد استفاده 32 بیتی بودند. و این تغییر پیش فرض با استفاده از اجرای یک خط دستور در command prompt ویندوز انجام شد:

jarfile="C:\Program Files (x86)\Java\jre7 u25\bin\javaw.exe" -jar "%1" %*

--------------------------------------------------------------------------------
پ.ن:
لینک پاسخ و توضیحات بیشتر در stackoverflow






نوع مطلب :
برچسب ها : dll، JNI، اجرای فایل jar، جاوا، netbeans، مشکل اجرای فایل jar، ویندوز 32 بیتی و 64 بیتی،
لینک های مرتبط :
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :