디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[서버정보] 스크립트 에러의 원인을 찾아서 조져보자.

ㅇㅇ(211.223) 2023.12.17 08:15:27
조회 163 추천 4 댓글 2
														

스크립트로 시스템 구현을 하다 보면

" 잘 돌아감에도 불구 " 하고, 버킷에 붉은 글씨로 에러 로그가 주루룩 뜰 때가 있다.


해당 글은 이에 대한 해결 법이다.


본론에 들어가기에 앞서, 최근 겪었던 에러를 토대로 글을 작성할 것이다.



1. 에러 로그 읽기


" Stack trace: " < 이 문구 아래 부터가 에러 로그인데,

너희가 읽어야 할 부분은 " Stack trace: " 바로 아래 글과

"Server platform: ~" 밑 부분이다.


일단, 내가 겪었던 에러 로그는 아래와 같다.


======================================

Stack trace:

java.lang.NullPointerException: Cannot invoke "org.bukkit.entity.Player.getScoreboard()"

because the return value of "ch.njol.skript.lang.Expression.getSingle(org.bukkit.event.Event)" is null


~


Current trigger: function scoreboardRefresh (simple event) (스코어보드.sk, line 1)

======================================


"Current trigger: ~" << 이 부분은 마지막에 설명하겠다.


위 로그에서 집중해야 할 부분은

"NullPointerException" 과 "org.bukkit.entity.Player.getScoreboard()".

이 두 문장이다.


첫 번째, "NullPointerExcption".


 NPE 라고 부르는 에러의 종류인데, 대상을 찾지 못 했을 때 발생하는 에러다.

해당 에러가 발생한 이유는 다음 설명할 에러를 보면 알 수 있다.



두 번째, "org.bukkit.entity.Player.getScoreboard()".

 

 정확히 말 하자면, 해당 부분은 에러가 아닌 "메소드(함수)" 인데,

스코어 보드를 불러오는 메소드이다.


 해당 부분 이전에 "Cannot invoke" 라 적혀있는데,

이는 "해당 메소드를 호출할 수 없었다." 이다.


 이로서 에러의 원인을 찾아냈다.

바로 "스코어 보드를 불러 올 대상을 찾지 못했다." 이다.


이제 해결해 보자.



2. 에러를 해결하는 방법


물이 샌다면, 구멍을 막고 보수 작업을 해주면 된다.


에러가 발생할 만한 이벤트를 찾아 수정 해주기만 하면 끝이다.



내가 에러가 발생했던 부분과 해결 과정은 아래와 같다.


on death:

@getExp(1, player)

@scoreboardRefresh()


getExp 는 경험치를 획득하는 스크립트 함수이고,

scoreboardRefresh 는 스코어 보드를 갱신해주는 함수이다.


on death 는 "엔티티가 죽을 때" 발동되는 이벤트 이기 때문에,

플레이어가 아닌 소, 돼지, 좀비 등 플레이어가 아닌 대상에게도 위 두 함수가 적용된다.


getExp 함수의 작동 방식은 변수에 값을 추가하는 것이 전부 이나,

scoreboardRefresh 함수의 작동 방식은 아래와 같았다.

 - 현재 화면에 띄워져 있는 스코어 보드를 지운다. (wipe)

 - 변수가 재 지정된 스코어 보드를 불러온다.


에러의 원인은 "스코어 보드를 불러올 수 없다" 였으니,

에러가 발생한 부분은 "현재 화면에 띄워져 있는 스코어 보드를 지운다." 일 것이라 생각했다.


그렇기에 on death 이벤트에 죽은 대상이 플레이어 인지 구별하는 조건문을 넣어 해결했다.


생각보다 간단하다!



3. 에러가 발생한 위치


"Server platform: ~" 밑 부분, "Current trigger: ~" 이 부분을 보면 된다.


함수로 구현 해 놓았다면, 아래와 같이 보일 것이다.


" Current trigger: function functionName (~ event) (~.sk, line N)  "


" ' ~.sk ' 스크립트 파일 함수 " functionName " 의 "N번째 라인" 에서 에러가 발생했다. " 라는 뜻이다.


에러가 발생한 위치도 찾아 냈으니,

이제 해결할 일만 남았다!!



그러나, 함수로 구현하지 않은 부분에서 에러가 발생했다면....

아쉽게도, 그러한 문제는 겪어보지 않아서 해당 케이스에 대한 정보가 없는 점은 이해해주길 바란다...



4. 안된다면.


에러 로그를 읽고서 몸을 아무리 비틀어도 해결되지 않는다면,

너희가 에러 로그를 잘 못 읽었거나, 문제 해결을 제대로 하지 못 했거나 이다.



나는 스크립트 고수도 아니고,

내가 해결한 방법이 정석이 아닐 수도 있다.


그래도, 내가 이렇게 해결 했으니

너희도 이렇게 에러를 해결할 수 있지 않을까? 싶어서 글을 작성했다.


쓰고 나니까 글이 깔끔하지 않은 것 같지만,

누군가에게 도움이 되는 글 이었으면 좋겠다.

추천 비추천

4

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기
자동등록방지

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2856 설문 주위 눈치 안 보고(어쩌면 눈치 없이) MZ식 '직설 화법' 날릴 것 같은 스타는? 운영자 24/04/29 - -
262521 일반 크리에이트모드 씹고수있음? [4] ㅇㅇ(114.205) 23.12.26 184 0
262520 질문 주민이 할인을 안해줌 ㅇㅇ(124.58) 23.12.26 64 0
262519 질문 cte2모드 질문입니다 - 모드추가 [2] ㅇㅇ(61.82) 23.12.26 230 0
262518 일반 밀리네어 모드 요즘 해도 재밌어?? [7] iino갤로그로 이동합니다. 23.12.26 112 0
262517 일반 하마 케넨갤로그로 이동합니다. 23.12.26 64 4
262516 질문 월드 만든 후에 데이터팩 넣을 수 있음? [4] ㅇㅇ갤로그로 이동합니다. 23.12.26 87 0
262514 일반 위더 스켈레톤 팜 바이옴 [1] dlaxogns57(211.105) 23.12.26 140 0
262513 질문 포지 모드서버인데 [1] ㅇㅇ(121.189) 23.12.26 95 0
262512 일반 찹트리넣고 야생좀 열어봐 ㅇㅇ(59.23) 23.12.26 49 0
262511 일반 회로 알못이라 그런데 이거 피스톤 왜써야하는거임? [1] ㅇㅇ(125.250) 23.12.26 163 0
262510 질문 BigChadGuys Plus 모드팩 서버 열려는데 이거 재밌어? ㅇㅇ(121.145) 23.12.26 62 0
262509 일반 닭 대량학살하는 방법좀 [4] 바빔야갤로그로 이동합니다. 23.12.26 231 1
262508 단타서 [닫]스무고개 오픈 [1] ㅇㅇ(211.201) 23.12.26 143 0
262507 일반 스티브 마선생님들 질문이 하나 있습니다... [1] 마린이(223.38) 23.12.26 88 0
262506 일반 1.20부터 나무팜이 막힘? [1] ㅇㅇ(59.23) 23.12.26 161 0
262505 일반 마린이 마인크래프트 자동 공장에 대해서 질문이 있습니다 ㅎㅎ [4] 주깐(49.236) 23.12.26 101 0
262504 일반 카펫모드 질문 [1] ㅇㅇ(116.39) 23.12.26 54 0
262503 일반 1.19.2 얼불모드 포팅 나왔누 [12] 시바개갤로그로 이동합니다. 23.12.26 141 0
262502 모드 마인콜로니 미리보기 이거 어떻게 지우는거야? [2] ㅇㅇ(125.182) 23.12.26 182 0
262501 일반 렐름 15일 남았는데 어카지 [1] ㅇㅇ(116.42) 23.12.26 71 0
262500 일반 경험치 팜 만들때 보통 몇층으로 함 [3] Pollux갤로그로 이동합니다. 23.12.26 162 0
262498 질문 마링이 질문좀 [2] 엄준식(211.62) 23.12.26 58 0
262497 일반 마린이 궁금한거 [4] ㅇㅇ(59.4) 23.12.26 76 0
262496 일반 Dream<<<이새끼뭐냐 [3] MC재명갤로그로 이동합니다. 23.12.26 254 0
262495 건축 맨날 집 하나 짓고나면 기운 쫙 빠지는듯 ㅇㅇ(39.120) 23.12.26 278 3
262494 일반 님들 실행 오류 뜨는디 이거 뭐가 문제임? [6] 시바개갤로그로 이동합니다. 23.12.26 104 0
262492 질문 네더성 내부에서 왜 호글린이 있는거지? [3] ㅇㅇ(223.38) 23.12.26 109 0
262491 일반 kappaPT쓰는게이있니 [2] ㅇㅇ(118.235) 23.12.26 140 0
262489 질문 심층암 섬손으로 캤는데 이거 윤나는 심층암으로 바꾸는방법없음..? [11] ㅇㅇ(211.177) 23.12.26 172 0
262488 일반 enigmatica 서버 하고있는데 램할당 질문좀 스갤러(121.139) 23.12.26 44 0
262486 질문 새롭고 강한 몬스터들 나오면서 난이도 올려주는 모드 없어? [1] ㅇㅇ(121.145) 23.12.26 95 0
262483 노트블 스즈미야 하루히의 우울 - God knows [3] 마블로드갤로그로 이동합니다. 23.12.26 141 3
262482 질문 페이퍼버킷 열려고 하는데 [1] 별빛돌멩이갤로그로 이동합니다. 23.12.26 132 0
262481 단타서 끝)캐치마인드 단타 [2] 배고픈돼지갤로그로 이동합니다. 23.12.26 223 0
262479 일반 다단 ㅠㅠ ㅇㅇ(211.36) 23.12.26 40 0
262478 단타서 [펑] [13] 테라피갤로그로 이동합니다. 23.12.26 319 0
262477 일반 어떤 모드 한번 깔았다가 뻈는데 [1] 오토충박별이갤로그로 이동합니다. 23.12.26 131 0
262476 일반 삼지창에 집전이랑 찌르기 유저한테도 적용됨? [2] 운쥐(58.236) 23.12.26 118 0
262475 질문 이 모드팩 실행 방법 알수 있을까요? [1] ㅇㅇ(220.65) 23.12.26 154 0
262474 일반 이거 어캐하는거임 [2] ㅇㅇ(118.235) 23.12.26 92 0
262473 일반 create 1만블럭 설명 어떤게 맞는거냐 [3] ㅇㅇ(223.39) 23.12.26 174 0
262472 일반 나무 공장 질문 (2) [1] ㅇㅇ갤로그로 이동합니다. 23.12.26 98 0
262471 일반 주민농장 작동 안하는 이유가 뭘까.. [4] ㅇㅇ(125.132) 23.12.26 105 0
262470 일반 호퍼 1.20.1이랑 1.20.2에서 달라? [4] ㅇㅇ(112.171) 23.12.26 191 0
262469 단타서 off)짧씹노퀴 [4] Deuterium갤로그로 이동합니다. 23.12.26 186 1
262467 일반 반블럭용암치킨공장 왜안됨 [4] ㅇㅇ(124.51) 23.12.26 92 0
262466 일반 명령블록에 명령어 고정시킬수 있음?? [1] ㅇㅇ(118.235) 23.12.26 35 0
262465 일반 황숲이랑 같이할만한 가벼운 모드 추천좀(1.20.1) ㅇㅇ(175.120) 23.12.26 78 0
262464 단타서 "환상의 문: GPT 미니게임 서버의 초대" [43] 단데기갤로그로 이동합니다. 23.12.26 635 7
262463 일반 난이도 쉬움이랑 어려움이랑 크리퍼 생성 수가 다른가여? [1] ㅇㅇ(180.66) 23.12.26 91 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2