Kod yozish - bu urushning yarmi. To'g'ri ishlashi uchun uni hali ham qilish kerak. IDE va disk raskadrovka vositalari bu borada bizga ko'p yordam beradi.
Misol sifatida IntelliJ IDEA dan foydalanib, men kodimiz ishga tushganda unga nima bo'lishini qanday aniqlashimiz mumkinligi bilan tanishishni taklif qilaman. Nosozliklarni tuzatish keng mavzu, shuning uchun bu sharh sho'ng'in kabi chuqur sho'ng'ishni taklif qilmaydi. Lekin umid qilamanki, shnorkeling)
Keyinchalik, biz tanlagan loyihani serverda ishga tushirishimiz kerak. Ushbu jarayon loyihaning o'zida topilishi mumkin bo'lgan kichik hujjatlarda tasvirlangan:
Shundan so'ng, server jurnalida biz yangi loyiha qanday "joylashtirilganligini" ko'rishimiz mumkin:
Shundan so'ng, biz sahifaga o'tamiz va biz " Ro'yxatdan o'tish
Agar hamma narsa yaxshi bo'lsa, biz bu haqda quyidagi xabarni ko'ramiz:
Topilgan manbaga o'tish uchun Enter tugmasini bosing:
Shunday qilib, biz ro'yxatdan o'tishda memberController.register chaqirilganini ko'ramiz.Ko'rinib turibdiki, bu qandaydir java sinfi bo'lishi kerak. Bosing
Darhaqiqat, bunday sinf mavjud. Keling, unga kiraylik. Ko'rinishidan, ro'yxatga olish usuli bo'lishi kerak. Bosing
Darhaqiqat, biz topdik. Ko'rinishidan, ro'yxatdan o'tish bu erda, memberRegistration.register da sodir bo'ladi . Ctrl tugmasini bosing va unga "tushish" usulini bosing:
Keling, "to'xtash nuqtasi" yoki Break nuqtasini o'rnatamiz. Bu kodning bajarilishi qayerda to'xtatilishi kerakligini ko'rsatadigan marker. Ayni paytda biz juda ko'p qiziqarli narsalarni o'rganish imkoniyatiga ega bo'lamiz. Uni qo'yish uchun siz qator raqamining o'ng tomonidagi joyni bosishingiz kerak.
http://localhost:8080/wildfly-hibernate4 sahifasida maydonlarni to'ldiring va Ro'yxatdan o'tish tugmasini bosing. Paneldagi g'oya belgisi miltillaydi:
Idea-ga o'tsangiz, disk raskadrovka panelida juda ko'p qiziqarli ma'lumotlar mavjudligini ko'rishingiz mumkin:
Bu yerda siz ob'ekt maydonlarining qiymatini ko'rishingiz mumkin. Masalan, ro'yxatdan o'tgan a'zo nimadan iborat:
Ajoyib. Yana nima qila olamiz? Biz kontekst menyusini ochishimiz va u erda "Ifodani baholash" ni tanlashimiz mumkin (yoki "Ishga tushirish" -> "Ifodani baholash" menyusi orqali). Yaxshisi, tuzatuvchining boshqaruv panelida:
Bu to'xtash nuqtasida o'ta ajoyib qobiliyat bo'lib, u kod nuqtasi kirish huquqiga ega bo'lgan hamma narsaga kirish huquqiga ega, shu nuqtada bajarilishi mumkin bo'lgan har qanday kodni bajarish uchun. Masalan:
Shuningdek, disk raskadrovka boshqaruv panelida dastur oqimi boshqaruvini qayerga o'tkazmoqchi bo'lganingiz uchun javobgar bo'lgan boshqaruv tugmalari mavjud. Bu sehr emasmi?) F8 (Step Out) tugmasini bosish orqali biz usullarni kiritmasdan kod bo'ylab yuramiz. F9 tugmachasini bosish orqali biz tuzatuvchi bilan kod satrlari bo'ylab yurishni to'xtatamiz va tuzatuvchiga dasturning bajarilishi ustidan nazoratni beramiz. Agar biz F7 (Step Into) tugmachasini bossak, biz yo'lda uchrashadigan har bir usulni kiritib, kodni o'tkazamiz. Aytgancha, ushbu ma'lumot blokiga alohida e'tibor bering:
Bu biz bo'lgan ipni va joriy ipning stekidagi usullarni ko'rsatadi. Lekin bu hammasi emas. Qulaylik uchun siz ramkalar yorlig'ini ochishingiz mumkin. Buning uchun u yoqilgan bo'lishi kerak:
Endi ramkalar yorlig'ida biz usuldan usulga o'tish haqidagi ma'lumotlarni ko'ramiz, chunki Step Into yordamida kod orqali yurishni boshladi.
Ko'rib turganimizdek, biz har doim dastur bajarilayotgan joyga o'tkaza olmaymiz. Biz hozir "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)" damiz. Lekin, aslida, biz amaldamiz. Buni ko'rsatilgan sinf tasdiqlaydi:
Keling, buni ko'rib chiqaylik. Ma'lumki, u joriy ob'ektga ishora qiladi. Biz TransactionScopedEntityManager xizmatidamiz. Nega Idea bizga kodni ko'rsata olmaydi? Gap shundaki, IntelliJ Idea hozirda hech qanday TransactionScopedEntityManager haqida bilmaydi, chunki u bizning loyihamiz bilan bog'liq emas (u loyiha bog'liqliklarida emas). Ilova serveri ishlayotgan bo'lsa, uning ichida juda ko'p turli xil kutubxonalar ishlaydi. Lekin biz ular haqida juda kam narsa bilamiz, chunki... umuman olganda, biz ichki narsalarni o'rganishimiz shart emas, faqat ishlash uchun kerak. Ammo ba'zida ish yoki sportga bo'lgan qiziqish buni talab qiladi. Keyin Idea-ga ushbu kutubxona haqida xabar berishingiz kerak, shunda u sinf kodini qaerdan olishni biladi.
Endi natijani kutamiz. U sizni kutmaydi)
Endi biz uning manba kodini biror joyda topishimiz kerak. Va ikkita variant mavjud:
Endi qaramlikni tavsiflashga o'tamiz. Ushbu sahifada siz manba kodini yuklab olishingiz mumkin. Ajoyib, endi kod yuklab olindi. Faqat kutubxonani ulash qoladi. U juda sodda tarzda ulanadi. Loyiha sozlamalarini ochishimiz kerak:
U erda biz "Kutubxonalar" ni tanlaymiz va olingan manba kodlarini "Manbalar" bo'limiga qo'shamiz va "Sinflar" bo'limida biz Far Manager yordamida topilgan WildFly katalogidan kutubxona jar faylini ko'rsatamiz. Shundan so'ng, biz F7 bo'ylab harakat qilganimizda, biz AbstractEntityManager va TransactionScopedEntityManager sinflarining mazmunini ko'ramiz, shuningdek, Ctrl+N tugmalari yordamida sinflar bo'yicha qidirish orqali ham foydalanish mumkin bo'ladi.
Endi to'xtash nuqtasi faqat ism Maksimilian bo'lganda yonadi. "Ko'proq" tugmasini bosish orqali siz tanaffus nuqtalari uchun kengaytirilgan sozlamalar to'plamidan foydalana olasiz.
Tanlangan istisno turi uchun yangi qoida yarating:
Masalan, NPE uchun:
#Viacheslav
Kirish
Kodni yozishning bir qismi uni tuzatishdir. Va agar sizning vazifalaringiz kodni qo'llab-quvvatlashni o'z ichiga olsa, disk raskadrovka yanada ko'proq bo'ladi. Bundan tashqari, disk raskadrovka yordamida siz boshqa birovning kodining o'rmoniga sho'ng'ishingiz mumkin bo'lgan kutubxonalar va ishlatiladigan ramkalar ishini chuqur o'rganishingiz mumkin. Bizning sho'ng'in uchun bizga kerak bo'ladi:- Rivojlanish muhiti: Bepul IntelliJ Idea Community Edition
- Maven o'rnatildi
- WildFly dastur serveri 12.0.0.Final
- Rasmiy misollar uchun manba kodi: Tez boshlash manba kodi
bin\standalone.bat
(yoki *nix tizimlari uchun standalone.sh) yordamida ishga tushiramiz. (!) --debug parametridan boshlash muhim.Biz server ishga tushishini kutamiz. Ular bizga u boshlanganini yozadilar va vaqtni ko'rsatadilar. Bu shunday ko'rinadi:
\hibernate4\README.adoc
Ushbu hujjatda ko'rsatilganidek, biz hibernate4 katalogida buyruqni ishga tushirishimiz kerak: mvn clean package wildfly:deploy
Qurilish muvaffaqiyatli yakunlanganligi haqidagi xabarni kutmoqdamiz:
http://localhost:8080/wildfly-hibernate4
" shakli bilan sahifani ko'rsatishimiz kerak . Shunday qilib, tajribalarga tayyorgarligimiz tugallandi va biz boshlashimiz mumkin)) Aniqlik uchun oldinda juda ko'p rasmlar bo'ladi, shuning uchun tayyorlaning)
Masofaviy disk raskadrovka
Shunday qilib, biz Debug rejimini sozlashimiz kerak, shunda bizning IDE dastur serverida kodning bajarilishini nazorat qiladi. IntelliJ Idea ikkita versiyada taqdim etiladi: bepul (Hamjamiyat) va pullik (Ultimate). Ikkinchisini EAP shaklida rasmiy ravishda sinab ko'rish mumkin. Ultimate versiyada hamma narsa oddiy - dastur serveri disk raskadrovka rejimida to'g'ridan-to'g'ri IDE dan ishga tushirilishi mumkin. Ammo Hamjamiyat versiyasida siz bir nechta narsalarni qo'lda qilishingiz kerak. Shuning uchun, keling, yanada murakkab ishni ko'rib chiqaylik, ya'ni. hamjamiyat versiyasida sozlash. Hamjamiyat versiyasida ba'zi cheklovlar mavjud. Xususan, undan dastur serverini ishga tushira olmaysiz. Ammo siz masofaviy disk raskadrovkani (Remote Debug) o'rnatishingiz mumkin, agar alohida joyda bizga kerak bo'lgan dastur bilan ishlaydigan server mavjud bo'lsa. Keling, bu yerdan sozlash tavsifidan foydalanamiz: IntelliJ Idea hamjamiyat nashrida Wildfly-ni masofadan disk raskadrovka qilish (8787 port uchun masofaviy ishga tushirish konfiguratsiyasini sozlash). Konfiguratsiyadan so'ng biz yangi konfiguratsiyani Debug rejimida ishga tushiramiz:Nosozliklarni tuzatish jarayoni
Yozuvni saqlashda disk raskadrovka qilaylik. Buning uchun, avvalo, biz o'rganadigan joyni hal qilishimiz kerak. Oynaga ko'ra, bizga "Ro'yxatdan o'tish" tugmasi kerak. Keling, uni kodda topamiz. Shunday qilib, bizga element kerak, unda matn bo'lishi kerak: "Ro'yxatdan o'tish". Yoki u bilan qandaydir aloqasi bo'lishi kerak. BosingCtrl+Shift+F
va qo'shtirnoq ichida Ro'yxatdan o'tishni qidiring. Biz index.xhtml da borligini ko'ramiz.
Ctrl+N
va qidiring:
Ctrl+F12
va ro'yxatdan o'tish usulini qidiring
Nosozliklarni tuzatish uchun uchinchi tomon kutubxonalarini ulash
Birinchidan, biz o'zimiz qanday kutubxonani ulash kerakligini tushunishimiz kerak. Birinchi usul eng qiyin - Internetda qidirish. Natijani topish tezligi va natijasi ko'p jihatdan loyiha qanchalik yaxshi boshqarilganiga bog'liq. Masalan, WildFly-da ochiq ombor mavjud. Shunday qilib, biz “TransactionScopedEntityManager” ni Google qilganimizda https://github.com/wildfly/wildfly/tree/master/jpa/subsystem saytiga o‘tamiz va bizga wildfly-jpa kerakligini topamiz. Ikkinchi usul to'g'ri. Server qayerda, u yerga qarang. Bunga turli xil vositalar yordam berishi mumkin. Masalan, Windows-da bu Far Manager bo'lishi mumkin . Quyida qidiruv algoritmiga misol keltirilgan. Uni o'rnatib, ishga tushirgandan so'ng , chap yoki o'ngdagi yorliqlardan biriga o'tish uchun Tab-dan foydalaning va qattiq diskda bizga kerak bo'lgan bo'limni tanlang. O'rnatishdan keyin Far Manager katalogining o'zi Far Manager-da ochiq bo'lishi mumkin. Diskning ildiziga o'tish uchun ni bosing . Undan foydalanib, qidiruv oynasini oching, katalog nomini yozishni boshlang va katalog topilgandan keyin Enter tugmasini bosing. Ushbu qidiruv aqlli va qidiruv matniga mos keladigan kataloglarni ta'kidlaydi. Agar siz papkalari bo'lmagan belgilarni kiritsangiz, bunday belgilarni kiritib bo'lmaydi. Shu tarzda biz dastur serveri katalogiga o'tamiz. Aytaylik, modullar serverda qayerda joylashganligini bilmaymiz. Ehtimol, bu hayotingizda birinchi marta WildFly haqida eshitayotgandirsiz. Shuning uchun, fayllarni qidirish uchun darhol shu yerni bosing . Shunday qilib, mantiq aytadi: bizga kutubxona bilan fayl kerak. Ya'ni, bizga banka kerak. Ichkarida TransactionScopedEntityManager klassi bo'lishi kerak. Chunki class = fayl, keyin "o'z ichiga oladi" ni qidiring. Ya'ni, shunga o'xshash narsa:Alt+F1
Alt+F2
Ctrl + \
Alt+F
Alt+F7
- Juda foydali versioneye.com
- Markaziy Maven ombori
Shartlar bilan tanaffus nuqtalari
Keling, Break Points-ga qaytaylik. Ba'zan, biz har doim to'xtashni xohlamaymiz, lekin faqat ba'zi shartlar ostida. Nima qilsa bo'ladi? Va bu erda bizning IDE ham bizga yordam beradi. Break Pointni qo'yish orqali biz unga shart belgilashimiz mumkin. Masalan, nuqta qo'ying va ustiga sichqonchaning o'ng tugmachasini bosing:Istisnolar uchun tanaffus nuqtalari
Ba'zan biz xatoga yo'l qo'yishimiz mumkin va biz uning qayerdan kelganini kuzatishni xohlaymiz. Keyin biz to'xtash nuqtasini kodning ma'lum bir qatoriga emas, balki istisno qilinadigan joyga qo'shishimiz mumkin. Buni amalga oshirish uchun siz barcha to'xtash nuqtalari ro'yxatini kengaytirishingiz kerak:HotSwap darslari
Debugger - bu ajoyib narsa. Nosozliklarni tuzatishdan tashqari, u sinflarni o'zgartirishga imkon beradi! Ha, resurslarni (masalan, xhtml sahifalari kabi) osongina o'zgartirib bo'lmaydi. Ammo java sinflarining kodini tezda almashtirish mumkin (bu Hot Swap deb ataladi). Buning uchun faqat tuzatuvchi biriktirilgan sinfni o'zgartiring va Run -> O'zgartirilgan sinflarni qayta yuklashni bajaring. Ushbu mavzu bo'yicha foydali sharh: JVM-da kodni hot-swap qilishning 4 ta bepul usuliXulosa
Tuzatish vositasi - bu ishlab chiquvchiga ijro etuvchi kodning chuqurligiga kirib borish va uni har bir tafsilotini o'rganish imkonini beruvchi kuchli vosita. Bu sizga eng chalkash xatolarni tuzatishga imkon beradi. Shuningdek, u ba'zi kutubxonalar qanday ishlashini yaxshiroq tushunishga imkon beradi. Hatto bunday qisqacha sharh juda ta'sirli bo'lib chiqdi, ammo umid qilamanki, bu foydali va qiziqarli bo'ladi. Agar kimdir ushbu materialga qiziqsa, quyidagi havolalar orqali sho'ng'inni davom ettirishingiz mumkin:- Birinchi Java ilovangizni disk raskadrovka qilish
- Qo'llanma: Java disk raskadrovka chuqur sho'ng'idi
GO TO FULL VERSION