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);
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력