2017-04-04 1 views
1

이 코드는 main 메소드를 통해 호출 할 때 절대적으로 정상적으로 실행되고 필요한 파일을 다운로드합니다 wget을 통해. 내 프로젝트 디렉토리에서 파일을 볼 수 있습니다.주 메소드 트리거에서 파일을 다운로드 할 수 있음 wget을 통해 Java의 Rest Service 뒤에 없음

동시에 메서드에 필요한 URL을 전달하는 나머지 svc 뒤에이 메서드를 노출하면 코드를 통과하지만 파일을 다운로드하지 않는 것처럼 보입니다. (디버거 모드에서 확인). 그것은 다른 곳에서 다운로드하려고 시도했는지 또는 나머지 svc 뒤에 노출 된 ProcessBuilder가 여기에서 문제가되는 것을 의미합니까?

Runtime rt = Runtime.getRuntime(); 
    ProcessBuilder pb; 
    int exitVal = 0; 
    try { 
     pb = new ProcessBuilder("wget", "-O", "myFile.csv",myFileUrl); 
     pb.redirectErrorStream(true); 
     Process downloadFirst = pb.start(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(downloadFirst.getInputStream())); 
     while (reader.readLine() != null) {} 
     exitVal = downloadFirst.waitFor(); 
     LOG.info("Downloaded my file with exitValue:" + exitVal); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
+1

대상 파일의 전체 경로를 설정하여 파일이 예상 한 위치에 정확하게 생성되도록하십시오. – MrSmith42

+0

'wget'과 같은 시스템 호출 대신 java 만 사용해야합니다. https://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html – MrSmith42

+0

@ MrSmith42 URL에서 직접 읽기에는 독자적인 단점이 있기 때문에이 아이디어를 무시한 것입니다. 원시 콘텐츠 대신 HTML 페이지 소스 자체를 읽기 시작했습니다. – Sid06

답변

1

@ MrSmith42에 명시된대로 나머지 서비스에서 전화 할 때 전체 경로를 지정하면 작동합니다.

관련 문제