PDA

View Full Version : خطا در اجرا



hosseini25
پنج شنبه 11 شهریور 1395, 16:27 عصر
سلام
من یک پروژ maven دارم که وقتی سرورشو اجرا میکنم تا بتونم پروژه خودمو وارد محیط رقابت بکنم توی یک قسمت خطای زیر رو میده ممنون میشم راهنمایم کنید.

Error creating bean with name 'tariffMarketBean' defined in ServletContext resource [/WEB-INF/spring/base.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationExcepti on: Failed to instantiate [org.powertac.visualizer.user.TariffMarketBean]: Constructor threw exception; nested exception is java.lang.NullPointerException

vahid-p
پنج شنبه 11 شهریور 1395, 18:13 عصر
خطای متداول NullPointerException در کانستراکتور کلاس org.powertac.visualizer.user.TariffMarketBean رخ داده که باید با توجه به کد خطاش رو تصحیح کنید
اینکه چرا در اون خط خطا میده و چی null بوده و شما از متد یا فیلدهاش استفاده کردید و...

یک Breakpoint رو اون خط بذارید و اینبار به جای Run کردن، Debug کنید ببینید چی null است.

hosseini25
پنج شنبه 11 شهریور 1395, 18:53 عصر
این کلاس اصلا جزء پروژه من نیست و من بهش دسترسی ندارم مال سروره
ببینید یه سروریه که من با دستورmvn -Pweb رانش میکنم و وقتی اجراش تموم شد از طریق http://localhost:8080/visualizer/ در مرور گر صفحه ماژول های برنامه رو باز میکنم که میتونم عامل خودو ایمپورت کنم تا با عاملهای دیگه رقابت کنه. حالا قبل اینکه اصلا من بخوام عامل خودمو ایمپورت کنم سرور توی یکی از ماژولاش این خطا رو مید.
آیا با دستکاری فایل POM.xml قبل اجرا کاری میشه کرد؟؟؟

vahid-p
جمعه 12 شهریور 1395, 14:33 عصر
خطای NullPointerException خطاییه که باید کد رو بررسی کنی. اینطور نیست که به راحتی بشه گفت مشکل از کجاست. چون هر آبجکتی ممکنه null باشه.
ممکنه مشکل از طراح لایبرری org.powertac.visualizer باشه و یا از کد شما. در نتیجه ممکنه کسی که با این خطا قبلا مواجه شده باشه بتونه راهنماییتون کنه، چون مثلا حدس میزنه کجا رو شما به احتمال زیاد اشتباه نوشتید. طبق چیزی که من میبینم این لایبرری چندان معروف نیست، پس احتمالا کاربران کمی از اون استفاده کردن و به تبعش چندان مسائل و خطاهاش در اینترنت بحث نشده.


طبق کلاس https://github.com/powertac/visualizer/blob/master/src/main/java/org/powertac/visualizer/user/TariffMarketBean.java یک کانستراکتور داره با دو آبجکت BrokerService و VisualizerHelperService که از اولی getBrokers رو صدا زده و از دومی getSafetyWholesaleTimeslotIndex و getMillisForIndex صدا زده شده و این نقاطی هست که شما باید چک کنید وضعیت آبجکت ها به چه صورت است.

راه قانونمندی برای حل این مشکل به نظر من وجود نداره (سرچ کنید شاید مشکل مشابهی وجود داشته باشه و بتونید ازش ایده بگیرید)

hosseini25
جمعه 12 شهریور 1395, 15:54 عصر
اصلا به کد من مربوط نمیشه چون من وقتی سرور رو اجرا میکنم و این خطا رو میده من هنوز اصلا کدمو اجرا نکردم و عاملم وارد محیط نشده
مشابه این خطا رو پیدا کردم ولی متوجه نشدم جوابشو لینک زیر رو ببینید .


http://power-tac-developers.975333.n3.nabble.com/Visualizer-assumes-the-broker-publish-tariffs-for-all-PowerTypes-tt4026189.html (http://power-tac-developers.975333.n3.nabble.com/Visualizer-assumes-the-broker-publish-tariffs-for-all-PowerTypes-tt4026189.html)

hosseini25
جمعه 12 شهریور 1395, 16:00 عصر
من به کدهای سرور دسترسی ندارم . آیا امکانش هست از طریق POm.xml بتونم فایل جار دیگه ای که شامل کلاس TariffMarketBean.java و مشکلی نداره رو اضافه کنم به سرور؟

vahid-p
جمعه 12 شهریور 1395, 23:17 عصر
والا چیزی که من تو این لینک دیدم، میگه کلا این لایبرری مشکل داره و تو آپدیت شدنش هم شک وجود داره. در نتیجه بهتره لایبرری جایگزینی برای کارتون پیدا کنید یا خودتون یکی رو بنویسید یا همینی که هست رو تصحیحش کنید.

البته من فکر نمیکنم مشکل تا این حد حاد باشه.

این موضوع که به TariffMarketBean دسترسی ندارید متوجه نمیشم. بلاخره شما لایبرری رو اد کردید و میتونید در نقاطی که میخواید Breakpoint قرار بدید و debug کنید. کاری به سرور هم ندارم. اصلا لایبرری رو میتونید به صورت پکیجی کنار سورس کدتون قرار بدید و قسمت هایی که میخواید رو breakpoint بذارید یا مثلا اطلاعاتی که میخواید در خروجی برای چک کردن چاپ کنید رو در کد کلاس TariffMarketBean وارد کنید.

می تونید لایبرریتون رو هم از طریق POM.xml عوض کنید. ولی میتونید لایبرری رو دستی اد کنید فرقی نمیکنه.

hosseini25
شنبه 13 شهریور 1395, 17:23 عصر
من به لایبری سرور دسترسی ندارم . ببینید فایل سرور یک فایل زیپ که حجمش چند کیلو بایته من دانلودش میکنم و اکسترکش میکنم. این فایل داخلش فایل POM.xml قرار داره که وقتی از طریق خط فرمان و با دستور mvn -Pweb اجراش میکنم شروع میکنه به دانلود لایبری های موجود در فایل POm.xml . حالا وقتی دانلود تموم شد و من محیط ویولایزر رو از طریق آدرس محلی باز میکنم توی یک ماژولش این خطا رو میده و اصلا به مرحله ای نمیرسه که کدای من وارد پروژه بشن . من کجا میتونم breakpoint بزارم حالا؟ تنها راهی که به نظرم میرسه تغییر فایل POM.xml ولی نمیدونم دقیقا چطوری باید اینکارو بکنم

vahid-p
یک شنبه 14 شهریور 1395, 11:43 صبح
POM.xml که یه سری چیزا رو معرفی کرده و اینکه با تغییرش میشه کاری انجام داد بعید میدونم.

به هر حال از یک IDE استفاده کنید (مثلا Netbeans) به جای وارد کردن دستور mvn -Pweb ، یک پروژه Maven بسازید و محتویات فایل POM رو در اون پروژه قرار بدید. ران کنید، خود به خود لایبرری هایی که دانلود شدن کنارش قرار میگیرن. اون موقع میتونی دیباگ کنی.

کل راه حلی که به ذهنم میرسه اینه. راه حل دیگه ای ندارم و سعی و تلاش شما رو میطلبه.

موفق باشید

hosseini25
یک شنبه 14 شهریور 1395, 19:51 عصر
من پروژه رو به نت بینز اضافه کردم وقتی میخوام دیباگ کنم گزینه هاش به جز debug test file غیر فعال هستن. توی قسمت dependence فایل های جار پروژه اومدن . حالا سوال من اینه اولا بعد پیدا کردن فایل جار ناقص چطور باید تغییرش بدم؟ هدف از این مراحلی که گفتین چیه؟پیدا کردن خطا؟اگه پیدا کردن خطاست وقتی نتونم فایل جار اصلاح کنم چه سودی داره. من الان میدونم کلاسی که توی خطای بالا هست تویکدوم فایل جار ولی روش اصلاح رو نمیدونم. توی این زمینه لطفا بیشتر توضیح بدین که چه عملیاتی روی فایل جار انام بدم تا خطا رفع بشه نه پیدا کردنش

vahid-p
یک شنبه 14 شهریور 1395, 20:39 عصر
چرا نشه خطاش رو اصلاح کرد؟ وقتی شما سورس کد visualizer رو به صورت رایگان در لینکی که بالا گفتم در اختیار دارید؟

hosseini25
یک شنبه 14 شهریور 1395, 21:02 عصر
من برنامه نویسیم خوب نیست زیاد. میشه جزی تر توضیح بدین؟ اگه امکان داره دقیقا مراحل کاری که باید انجام بدم رو بیان کنین. پیدا کردن خطا و اصلاح و در نهایت نحوه استفاده از فایل اصلاح شده

dasssnj
یک شنبه 21 شهریور 1395, 08:39 صبح
تاپیک قفل شد.

در صورتی که برای رفع مشکلی نیاز به راهنمایی دارید ابتدا جستجو کنید . در صورت پیدا نکردن راه حل تاپیکی با عنوان مناسب ایجاد کرده و سوال خود را کامل و واضح بیان کنید.
دقت کنید که هیچکدام از اعضای سایت مسئولیتی در قبال پاسخ دادن به شما ندارند و درخواست حل تمارین و پروژه های دانشجویی نیز خلاف قوانین انجمن است .
حتما قبل از ایجاد تاپیک جدید قوانین تالار (http://barnamenevis.org/showthread.php?466091-%D9%82%D9%88%D8%A7%D9%86%DB%8C%D9%86-%D8%AA%D8%A7%D9%84%D8%A7%D8%B1-(%D8%AD%D8%AA%D9%85%D8%A7-%D9%85%D8%B7%D8%A7%D9%84%D8%B9%D9%87-%D8%B4%D9%88%D8%AF)) را مطالعه فرمایید.

موفق باشید