-
[리눅스] 우분투 서버에서 spring boot jar 파일 실행 시 java.lang.IllegalArgumentException: URI is not hierarchical, java.io.FileNotFoundException 에러Backend/리눅스 2023. 5. 31. 21:26728x90
문제
엑셀파일에서 데이터를 가져오기 위해 resources 안에 엑셀 파일을 넣어두고 이를 읽어오는 코드를 작성했었다.
문제가 됐던 코드는 다음과 같다.
URL url = this.getClass().getClassLoader().getResource("test.xlxs"); File f = new File(url.toURI()); FileInputStream file = new FileInputStream(f); XSSFWorkbook workbook = new XSSFWorkbook(file);
- resources 경로 상에서 file을 url을 가져와 File 객체를 생성하고 여기서 inputstream을 얻어오는 코드이다.
- 엑셀 파일 파싱을 위해 XSSFWorkbook을 사용했다.
그 결과 java.lang.IllegalArgumentException: URI is not hierarchical, 에러를 냈다.
관련해서 검색을 해봤을 때 URL로 가져오는 것이 아니라 ClassPathResource를 통해 resource를 얻어오는 것이었다. 따라서 다음과 같이 작성을 했었는데 여전히 실패...
File f = new ClassPathResource("test.xlxs").getFile(); FileInputStream file = new FileInputStream(f); XSSFWorkbook workbook = new XSSFWorkbook(file);
결론적으로 java.io.FileNotFoundException 에러를 발생시켰다.
해결
문제는 resources의 파일에 대해 File 객체로 받아오는 것이 문제였다. 따라서 resource를 file이 아닌 InputStream으로 받아 해결할 수 있었다.
InputStream inputStream = new ClassPathResource(getFilePath(year, semester)).getInputStream(); XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
728x90'Backend > 리눅스' 카테고리의 다른 글