Jar 안에 있는 Jar 파일들을 unzip 하는 메소드를 썼는데 도저히 왜 잘못됬는지 모르겠어요..(java)

조회수 897회

밑에 에러메세지랑 코드 첨부 했어요.. 깃헙 링크(https://github.com/YounghoonKwon/checker-project)

지금 당장 하려고 하는거는 Nested 된 jar file들을 다 unzip 하려고 하는거에요. Collection files = FileUtils.listFiles(root, null, recursive); 이라인에서 에러가 뜨는건 맞는거같은데 recursion 구현하자마자 여기서 막혀서 못나아가고있네요 ㅠㅠ 도와주세요!

Curr directory:/Users/younghoonkwon/jar-analyzer unzipping directory/Users/younghoonkwon/jar-analyzer/test1.jar@ Curr directory:/Users/younghoonkwon/jar-analyzer/test1.jar@ java.lang.IllegalArgumentException: Parameter 'directory' is not a directory at org.apache.commons.io.FileUtils.validateListFilesParameters(FileUtils.java:545) at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:521) at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:691) at org.vulnerability.checker.JarParser.unzipJars(JarParser.java:31) at org.vulnerability.checker.JarParser.unzipJars(JarParser.java:38) at org.vulnerability.checker.VulnerabilityChecker.main(VulnerabilityChecker.java:26) [/Users/younghoonkwon/jar-analyzer/test1.jar]

public void unzipJars(String toFind, String currDirectory) {
    File root = new File(currDirectory);
    try {
        boolean recursive = true;
        System.out.println("Curr directory:"+root);
        Collection<File> files = FileUtils.listFiles(root, null, recursive);
        for (Iterator<File> iterator = files.iterator(); iterator.hasNext();) {
            File file = (File) iterator.next();
            if (file.getName().endsWith(toFind)) {
                if(toFind.endsWith("jar")) {
                    unzip(file.getAbsolutePath() + "@",file.getAbsolutePath());
                    System.out.println("unzipping directory"+ file.getAbsolutePath()+"@");
                    unzipJars("jar", file.getAbsolutePath()+"@");
                    this.jarList.add(file.getAbsolutePath());
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

static void unzip(String destDirPath, String zipFilePath) throws IOException {
    Runtime.getRuntime().exec("unzip "+ zipFilePath + " -d" + destDirPath);
}

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)