java的java.util.jar包下面的工具类可以实现。代码如下
/**
* 获取指定包下的类名称
*
* @param jarPath
* @param packageName
* @return
* @throws Exception
*/
public List<String> getClassNamesUnderPackage(String jarPath, String packageName) throws Exception {
List<String> list = new ArrayList<String>();
JarFile jarFile = new JarFile(jarPath);
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
String name = entries.nextElement().getName();
String replaceName = name.replace("/", ".");
if (replaceName.startsWith(packageName) && !name.endsWith("/")) {
list.add(replaceName.substring(0, replaceName.length() - 6));
}
}
return list;
}
下面的方法可以拿到文件夹路径,然后用io的方法,可以得到所有的类
String packageName = "com.ott.atest";
packageName = packageName.replace(".","/");
String rootPath = Thread.currentThread().getContextClassLoader().getResource(packageName).getPath();
System.out.println(rootPath);