강의

멘토링

로드맵

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của chl9338
chl9338

câu hỏi đã được viết

Phát triển ứng dụng web dựa trên Spring và JPA

Đô-men khu vực

jar파일로 생성시

Viết

·

270

0

zoneService에서 자꾸 에러가 뜨는데 

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

javaJPAspringspring-bootthymeleaf

Quiz

51% người trả lời sai. Hãy thử ngay!

태그(관심 주제)나 존(활동 지역)을 JPA Entity로 설계한 주된 이유는 무엇일까요?

데이터 불변성을 보장하기 위해서

고유 식별자를 가지며 다른 엔티티에서 참조되기 위해서

연관된 부모 엔티티가 삭제될 때 함께 삭제되도록 하기 위해서

데이터베이스 스키마 관리를 단순화하기 위해서

Câu trả lời 2

5

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

whiteship님의 프로필 이미지
whiteship
Người chia sẻ kiến thức

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

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

Hình ảnh hồ sơ của chl9338
chl9338

câu hỏi đã được viết

Đặt câu hỏi