最近想要自己写一下 Vim 中 Java 代码的自动补全,涉及到 import 部分的自动导入,记录下关键步骤。

想要做自动导入,首先需要知道依赖包中类名的列表,也就是需要反解出 jar 中 class 列表。

这里需要 java.util.jar 包中的几个类,直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

/**
* Created by wxnacy
*/
public class ClassList {

public static void main(String args[]) {

List<String> list = new ArrayList<String>();
try {
JarFile jarFile = new JarFile("/Users/wxnacy/.m2/repository/com/alibaba/fastjson/1.1.34/fastjson-1.1.34.jar");
Enumeration enu = jarFile.entries();
while (enu.hasMoreElements()) {
JarEntry jarEntry = (JarEntry) enu.nextElement();
String name = jarEntry.getName();
// 过滤出 class 文件
if (name.endsWith(".class") && name.indexOf("$") == -1 ) {
// 重新格式化文件名
name = name.substring(0, name.indexOf(".class"));
name = name.replaceAll("/", ".");
System.out.println(name);
list.add(name);
}

}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("list length " + list.size());

}


}
03-16 21:01