2017-09-24 3 views
0

프런트 엔드에 표시 할 데이터의 엑셀 파일을 읽는 스프링 부팅 응용 프로그램을 만들었습니다. 기본적으로 영구 데이터 원본입니다. 내 일식에서 올바르게 실행할 수 있지만 스프링 부트 항아리를 만들고 명령 줄에서 실행하면 파일이 항아리에 포함되지 않으므로 실패합니다.스프링 부트 JAR에 외부 파일 포함

두 위치 src/main/resources 및/src/main/webapp/WEB-INF/external /를 시도했지만 두 경우 모두 파일은 포함되어 있지 않습니다.

코드 :

private static final String FILE1 = "\\src\\main\\webapp\\WEB-INF\\external\\file1.csv"; 
private static final String FILE2 = "\\src\\main\\webapp\\WEB-INF\\external\\file2.csv"; 
private static String currentDirectory = Paths.get(".").toAbsolutePath().toString(); 
private static String completeAbsolutePath = currentDirectory 
         .substring(0, currentDir.length() - 1) 
         .replace("\\", "\\\\"); 

reader = new CSVReader(new FileReader(completePath + FILE1)) 

오류 :

java.io.FileNotFoundException : C : \ 삭제는 \ SRC \ 주 \ 웹 애플리케이션의 \ WEB-INF \ 외부 \ File1.csv

누군가가 도와 줄 수 있습니까?

+0

이 파일 – zuckermanori

+0

https://stackoverflow.com/questions/22886083/how-do-i-run-a-spring-boot-executable-jar-in-a 참조 코드를 붙여 넣으세요 -production-environment –

+0

안녕하세요 @ zuckermanori 코드는 다음과 같습니다. 두 파일의 데이터를 읽었습니다 (두 개의 개별 데이터베이스 테이블로 간주). private static final String FILE1 = "\\ src \\ main \\ webapp \\ WEB -INF \\ external \\ file1.csv "; 개인 정적 최종 문자열 FILE2 = "\\ src \\ main \\ webapp \\ WEB-INF \\ external \\ file2.csv"; private static String completeAbsolutePath = currentDir.substring (0, currentDir.length() - 1) .replace ("\\", "\\\\"); reader = new CSVReader (new FileReader (completePath + FILE1)) –

답변

1

여기서 두 가지 문제가 있습니다

  1. 당신은 자원을 넣어

    대신 지정된 자원 폴더를 만드는 폴더 src 아래를 거기에 넣어. "-> 자료 루트로 마크 디렉토리를"
  2. 당신이 가진 파일을 참조하는 , 당신은 폴더를 마우스 오른쪽 버튼으로 클릭합니다 "SRC"와 같은 수준에서 "자원"라는 폴더를 생성해야 할 선택 상대 경로. 이것은 eclipse에서 작동하지만 경로가 변경된 jar로 실행하면 상대 경로가 올바르지 않습니다.

    리소스를 사용하려면 ClassLoader API ClassLoader.getResourceAsStream(String name)을 사용해야 리소스를 사용할 수 있습니다.

    그것은 다음과 유사하게 나타납니다 :

    reader = new CSVReader(new InputstreamReader(ClassLoader.getResourceAsStream(completePath + 
    

    FILE1)));

+0

항아리를 열어 파일을 볼 수 없습니까? – zuckermanori

+0

당신이 제공 한 진술을 사용하여 jar 파일을 포함시킬 수있었습니다.파일을 리소스 폴더에 넣었습니다. 대신 JAR 파일에 포함되었습니다. 고맙습니다. 응용 프로그램은 여전히 ​​명령 프롬프트에서 실행되지 않지만 thats 다른 문제는 내가 믿습니다. –

관련 문제