我有一个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中搜索文件?
答案 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"