java 如何递归读取本地jar包的所有类名及所属jar包名
时间: 2023-07-16 07:13:35 浏览: 240
exe工具,根据类名,查找本地中包含该类名的jar包
Java 可以使用 JarFile 类和 JarEntry 类来递归读取本地 jar 包的所有类名及所属 jar 包名。下面是一个示例代码:
```java
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class JarUtils {
public static void main(String[] args) throws IOException {
String jarPath = "/path/to/your/jar/file.jar";
List<String> classNames = getAllClassNames(jarPath);
for (String className : classNames) {
System.out.println(className);
}
}
public static List<String> getAllClassNames(String jarPath) throws IOException {
List<String> classNames = new ArrayList<>();
JarFile jarFile = new JarFile(jarPath);
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
String fileName = entry.getName();
if (fileName.endsWith(".class")) {
String className = fileName.replace('/', '.').substring(0, fileName.length() - 6);
classNames.add(className);
}
}
jarFile.close();
return classNames;
}
}
```
这个示例代码会返回所有的类名,格式为完整包名加类名,例如 `com.example.MyClass`。同时,如果一个类在多个 jar 包中出现,它会被返回多次。要获取所属 jar 包名,可以在获取类名时记录对应的 jar 包名即可。
阅读全文