Cộng đồng Hỏi & Đáp của Inflearn
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
Người chia sẻ kiến thức
보통 이런 질문을 하실때는 어떤 에러인지 메시지를 보여주시면 좋겠는데요. 아마도 아래 코드 참고하시면 해결하실 수 있을 겁니다.
https://github.com/whiteship/studyolle/blob/master/src/main/java/com/studyolle/modules/zone/ZoneService.java





