• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

jar파일로 생성시

21.05.07 19:34 작성 조회수 106

0

zoneService에서 자꾸 에러가 뜨는데 

아마도 zones_kr.csv문제인것같은데 해결방법이 없을까요?

답변 2

·

답변을 작성해보세요.

5

twosom님의 프로필

twosom

2021.06.05

ClassPathResource 방식은 Jar 파일에서는 파일 경로를 찾을 수 없나봅니다. 구글링 해보니 결론은 InputStream 으로 바꿔서 해줘야한다고 하네요. 

@PostConstruct
public void initZoneData() throws IOException {
if (zoneRepository.count() == 0) {
Resource resource = new ClassPathResource("zones_kr.csv");

InputStreamReader inputStreamReader = new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(inputStreamReader);

StringBuilder sb = new StringBuilder();
int i = 0;
while (i < 85) {
sb.append(br.readLine());
sb.append("\n");
i++;
}
String s = sb.toString();
String[] zones = s.split("\n");

List<Zone> zoneList = Arrays.stream(zones).map(line -> {
String[] split = line.split(",");
return Zone.builder()
.city(split[0])
.localNameOfCity(split[1])
.province(split[2])
.build();
}).collect(Collectors.toList());
zoneRepository.saveAll(zoneList);
}
}

이런식으로 하니 jar에서도 잘 되긴 합니다.

원래는 while(true)로 하고 안에서 br.readLine 이 null이면 break 해주면 되는걸로 아는데, 이상하게 그렇게하면 계속 에러가 나네요.

아무튼 Jar파일에서도 실행하시려면 위처럼 하시면 될겁니다. 일단 저는 잘됩니다.

0

보통 이런 질문을 하실때는 어떤 에러인지 메시지를 보여주시면 좋겠는데요. 아마도 아래 코드 참고하시면 해결하실 수 있을 겁니다.

https://github.com/whiteship/studyolle/blob/master/src/main/java/com/studyolle/modules/zone/ZoneService.java