# فناوری جاوا > برنامه‌نویسی جاوا > بحث و گفتگو در مورد فناوری های مرتبط با جاوا >  خطا در اجرا

## hosseini25

سلام 
من یک پروژ 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

خطای متداول NullPointerException در کانستراکتور کلاس org.powertac.visualizer.user.TariffMarketBean رخ داده که باید با توجه به کد خطاش رو تصحیح کنید
اینکه چرا در اون خط خطا میده و چی null بوده و شما از متد یا فیلدهاش استفاده کردید و...

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

----------


## hosseini25

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

----------


## vahid-p

خطای NullPointerException خطاییه که باید کد رو بررسی کنی. اینطور نیست که به راحتی بشه گفت مشکل از کجاست. چون هر آبجکتی ممکنه null باشه.
ممکنه مشکل از طراح لایبرری org.powertac.visualizer باشه و یا از کد شما. در نتیجه ممکنه کسی که با این خطا قبلا مواجه شده باشه بتونه راهنماییتون کنه، چون مثلا حدس میزنه کجا رو شما به احتمال زیاد اشتباه نوشتید. طبق چیزی که من میبینم این لایبرری چندان معروف نیست، پس احتمالا کاربران کمی از اون استفاده کردن و به تبعش چندان مسائل و خطاهاش در اینترنت بحث نشده.


طبق کلاس https://github.com/powertac/visualiz...arketBean.java یک کانستراکتور داره با دو آبجکت BrokerService و VisualizerHelperService که از اولی getBrokers رو صدا زده و از دومی getSafetyWholesaleTimeslotIndex و getMillisForIndex صدا زده شده و این نقاطی هست که شما باید چک کنید وضعیت آبجکت ها به چه صورت است.

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

----------


## hosseini25

اصلا به کد من مربوط نمیشه چون من وقتی سرور رو اجرا میکنم و این خطا رو میده من هنوز اصلا کدمو اجرا نکردم و عاملم وارد محیط نشده 
مشابه این خطا رو پیدا کردم ولی متوجه نشدم جوابشو لینک زیر رو ببینید . 


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

----------


## hosseini25

*من به کدهای سرور دسترسی ندارم . آیا امکانش هست از طریق POm.xml  بتونم فایل جار دیگه ای که شامل کلاس TariffMarketBean.java  و مشکلی نداره رو اضافه کنم به سرور؟*

----------


## vahid-p

والا چیزی که من تو این لینک دیدم، میگه کلا این لایبرری مشکل داره و تو آپدیت شدنش هم شک وجود داره. در نتیجه بهتره لایبرری جایگزینی برای کارتون پیدا کنید یا خودتون یکی رو بنویسید یا همینی که هست رو تصحیحش کنید.

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

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

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

----------


## hosseini25

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

----------


## vahid-p

POM.xml که یه سری چیزا رو معرفی کرده و اینکه با تغییرش میشه کاری انجام داد بعید میدونم.

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

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

موفق باشید

----------


## hosseini25

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

----------


## vahid-p

چرا نشه خطاش رو اصلاح کرد؟ وقتی شما سورس کد visualizer رو به صورت رایگان در لینکی که بالا گفتم در اختیار دارید؟

----------


## hosseini25

من برنامه نویسیم خوب نیست زیاد. میشه جزی تر توضیح بدین؟ اگه امکان داره دقیقا مراحل کاری که باید انجام بدم رو بیان کنین. پیدا کردن خطا و اصلاح و در نهایت نحوه استفاده از فایل اصلاح شده

----------


## dasssnj

*تاپیک قفل شد.*

در صورتی که برای رفع مشکلی نیاز به راهنمایی دارید ابتدا جستجو کنید . در صورت پیدا نکردن راه حل تاپیکی با عنوان مناسب ایجاد کرده و سوال خود را کامل و واضح بیان کنید.
دقت کنید که هیچکدام از اعضای سایت مسئولیتی در قبال پاسخ دادن به شما ندارند و درخواست حل تمارین و پروژه های دانشجویی نیز خلاف قوانین انجمن است .
حتما قبل از ایجاد تاپیک جدید قوانین تالار را مطالعه فرمایید.

*موفق باشید*

----------

