如何在JAR中搜索文件?

时间:2014-03-06 18:46:01

标签: java jar executable-jar

我有一个JAR文件,我想在其中搜索类文件的存在。

import java.util.jar.*;

 public class Check
 {
     public static void main(String args[])  throws Exception
     {
         String path="C:\\workspace\\Project\\sun\\tools\\jam-dt.jar";
         path=path.replace("\\","/");
         JarFile jar=new JarFile(path);

         JarEntryentry=jar.getJarEntry("com/sun/xml/ws/binding/Bind.class");
    if(entry!=null)
    {
        System.out.println(" Entry present");

    }
    else
    {
        System.out.println("No Entry");
    }
}

}

但是JAR文件中存在许多目录。我不能在getJarEntry函数中手动输入它们中的每一个并检查。如何检查是否存在类。如何在JAR中搜索文件?

4 个答案:

答案 0 :(得分:2)

String path="C:/Users/hussain.wahid/Desktop/hussain back up/Hussain/Eclipse WorkSpace/SO/poi.jar";
         path=path.replace("\\","/");
         JarFile jar=new JarFile(path);
         ArrayList<String> fileNameList = new ArrayList<String>();

         Enumeration<JarEntry> myEntry = jar.entries();
         while(myEntry.hasMoreElements())
         {
             //System.out.println(myEntry.nextElement().toString());
             fileNameList.add(myEntry.nextElement().toString());
         }
         System.out.println(fileNameList.contains("com/sun/xml/ws/binding/Bind.class"));
        //org/apache/poi/hssf/record/aggregates/

我试图让它更容易理解

顺便说一下,引入arraylist是完全没必要的

    Enumeration<JarEntry> myEntry = jar.entries();
             while(myEntry.hasMoreElements())
             {
System.out.println(myEntry.nextElement().toString().equals("org/apache/poi/hssf/record/aggregates/"));
             }

答案 1 :(得分:0)

使用JarFile.entries()并迭代它们。

答案 2 :(得分:0)

您可以使用以下linux命令在jar文件中搜索类:

jar -tvf myjar.jar | grep com.sun.xml.ws.binding.Bind.class

答案 3 :(得分:0)

几年前的Windows上,我通常从命令行运行它:

for /R %G in (*.jar) do @jar -tvf "%G" | find "someFileNameNoExtension" > NUL && echo "%G"