디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅇㅇ(211.223) 2023.12.17 08:15:27
조회 173 추천 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
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2868 설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
2870 이슈 [디시人터뷰] 웃는 모습이 예쁜 누나, 아나운서 김나정 운영자 24/06/11 - -
2865 AD 호요버스 신작 <젠레스 존 제로> 7월 4일 오픈! 운영자 24/06/05 - -
265158 일반 이거 프로미던스 2 랜서버 어캐해요? ㅇㅇ(58.235) 01.10 46 0
265157 일반 오싹오싹 나무위키 스갤 문서 [2] ㅇㅇ(223.38) 01.10 220 2
265156 일반 마을 인식 범위는 종이랑 관련잇음? [5] ㅇㅇㅇ(122.40) 01.10 92 0
265155 일반 오싹오싹 우마공표 스갤 모에화 [21] 돌문갤로그로 이동합니다. 01.10 2091 21
265154 일반 엔더팜이 미친효율이긴하네 [3] 덕춘.갤로그로 이동합니다. 01.10 268 0
265153 질문 아이리스 소듐 쓰려는데 버전 문제로 자꾸 오류나는데 어떻게 함? [2] ㅇㅇ(125.183) 01.10 237 0
265152 질문 멀티서버 모드 통붕이(58.124) 01.10 60 0
265151 일반 모드서버엔 코어프로텍트 없잖음? 그럼 어케 검사,롤백시킴? [1] ㅇㅇ(210.183) 01.10 82 1
265150 질문 공지글 보고 서버엔진으로 실행까진 해서 done 떴는데 [2] ㅇㅇ(210.126) 01.10 142 0
265149 단타서 [종료] 롯데월드 [1] ㅇㅇ(59.14) 01.10 267 1
265147 일반 실험적 기능에서 주민 패치 적용하고 플레이해본 사람 있냐? [1] ㅇㅇ(123.143) 01.10 114 0
265146 일반 진짜 존나 꼭 쓰고싶은 스킨이 있는데 [6] ㅇㅇ(1.253) 01.10 279 0
265145 질문 스코어보드 만드는데 여기서 막혔어요 [4] ㅇㅇ(211.228) 01.10 144 0
265143 일반 서버avg tick은 어떤거임? [2] ㅇㅇ(223.39) 01.10 125 0
265142 일반 개인컴으로 서버2개 일주일 풀로 켜놔도 괜찮을까? [4] ㅇㅇ(118.235) 01.10 137 0
265140 단타서 다단대기방겸 개발서버(닫) [2] ㅇㅇ갤로그로 이동합니다. 01.10 201 0
265139 질문 모드팩에서 월드스폰?스폰위치?스폰청크 어딘지 어케 알음? [1] ㅇㅇ(210.183) 01.10 99 0
265138 일반 몬스터팜에 템 꽉찬거 어케 정리하지 ... [4] 덕춘.갤로그로 이동합니다. 01.10 195 0
265136 단타서 접속테스트 [2] ㅇㅇ(175.116) 01.10 141 0
265135 일반 마크 렐름서버에서 딴사람들한테 스킨이 안보이는데 어케 고침? ㅇㅇ(183.103) 01.10 79 0
265134 일반 마린이 새벽에 쌩고생함 [1] 덕춘.갤로그로 이동합니다. 01.10 144 0
265133 질문 친구새끼 하나 담굴건데 [6] ㅇㅇ(58.233) 01.10 337 0
265132 질문 그 번지코드 서버끼리 채팅되게하는거 플긴 이름이 머임? ㅇㅇ(114.207) 01.10 64 0
265131 일반 원래 스갤 문서가 이랬나요 [6] 그림그리는부계갤로그로 이동합니다. 01.10 352 14
265130 모드 마법사를 위한 비밀1: Iron's Spells 'n Spellbooks [4] ㅇㅇ(211.212) 01.10 2604 2
265129 일반 혹시 이 맵 아시는분 계시나요? [3] 카라로갤로그로 이동합니다. 01.10 219 0
265127 일반 무한 ㅈㄴ 안나오네 [5] 덕춘.갤로그로 이동합니다. 01.10 214 0
265126 일반 커스포지 쉐이더 00(49.175) 01.10 114 0
265123 일반 렐름은 서버장만 명령어 쓸수있음?? [1] ㅇㅇ갤로그로 이동합니다. 01.10 116 0
265122 질문 님들 에센셜플러그인 [4] 간장공장공장장갤로그로 이동합니다. 01.10 152 0
265121 일반 멀티에서 네더 베드락 안깨짐? [4] ㅇㅇ(1.249) 01.10 131 0
265116 일반 아오 이번엔 game 폴더가 좆같네 [4] ㅇㅇ갤로그로 이동합니다. 01.10 184 0
265108 일반 동물들 몇마리 추가하는게 엄청 힘든 작업인가 [5] ㅇㅇ(211.179) 01.10 278 0
265106 질문 프레임드랍 왜나는거임? [6] ㅇㅇ(211.225) 01.10 165 0
265105 일반 이새낀 뭐하는새끼냐 ㅋㅋㅋㅋㅋㅋㅋㅋ [4] ㅇㅇ(59.12) 01.10 724 0
265098 질문 서버에서 사람 공격이랑 채팅은 되는데 블럭은 안캐지는 버그는 뭐임 [1] ㅇㅇ(211.217) 01.10 131 0
265097 일반 형들 픽셀몬 버킷 열려고 하는데 제발 좀 살려줘 [6] ㅇㅇ(211.112) 01.10 155 0
265096 질문 친구들이랑 게임하다가 월드가 다 날라갔는데 이거 뭐 방법없을까...? ㅇㅇ(124.51) 01.10 92 0
265091 질문 테라퍼마 엔지니어링 친구랑 서버 열어서 하는데 서버 업데이트도 가능함? [3] ㅇㅇ(218.236) 01.10 137 0
265090 일반 아 씨발 실수로 디럭스 샀네 [3] ㅇㅇ갤로그로 이동합니다. 01.10 287 5
265088 일반 구글 클라우드 connection refused 이거 [1] ㅇㅇ(222.239) 01.10 97 0
265086 모드 atm9 모드팩 ㅅㅂ이거 ㅇㅇ(59.22) 01.10 247 0
265084 일반 몹타워 경험치랑 엔더맨 경험치랑 다름? [6] 덕춘.갤로그로 이동합니다. 01.10 254 0
265082 일반 픽셀몬 모드 몹젠이 너무 많은데 어떻게 줄임? [1] ㅇㅇ(222.233) 01.10 132 0
265081 질문 랜서버 세이브 질문 [2] 딥다갤로그로 이동합니다. 01.10 85 0
265075 질문 BSL 쉐이더 좀 도와다오 [2] ㅇㅇ(175.112) 01.10 214 1
265074 단타서 [단타] 혹한에서 살아남기 1.2버전 [4] 감자씨앗갤로그로 이동합니다. 01.10 339 7
265073 일반 렐름 서버 도움좀 부탁드려요 [1] ㅇㅇ(211.213) 01.10 76 0
265072 일반 방금 놀이터 처음 들어갔는데 닫아버렸노... [3] ㅇㅇ(59.6) 01.10 205 0
265071 일반 마을 가운데에 나무 세웠어 [7] ㅇㅇ(125.183) 01.10 209 1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2