我需要从jar文件(OSGified)中读取类名(只是简单名称)。我已将jar文件放在lib文件夹中,并将其添加到类路径中。这是我写的代码:
public void loadClassName() throws IOException {
JarFile jf = new JarFile("/lib/xxxx-1.0.0.jar");
List<String> list = new ArrayList<String>();
for (JarEntry entry : Collections.list(jf.entries())) {
if (entry.getName().endsWith(".class")) {
String className = entry.getName().replace("/", ".").replace(".class", "");
list.add(className);
}
}
}
不知怎的,我在构造jarfile对象时遇到了Filenotfound异常。有人能告诉我们应该如何给JarFile构造函数提供jar路径吗?
答案 0 :(得分:0)
试试这个:
JarFile jf = new JarFile("lib/xxxx-1.0.0.jar");
答案 1 :(得分:0)
感谢用户@Perception。他的回答完美无瑕。
这是工作代码:
final InputStream jarStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("lib/xxxxx-1.0.0.jar");
JarInputStream jfs = new JarInputStream(jarStream);
List<String> list = new ArrayList<String>();
JarEntry je = null;
while (true) {
je = jfs.getNextJarEntry();
if (je == null) {
break;
}
if (je.getName().endsWith(".class")) {
String className = je.getName().replace("/", ".").replace(".class", "");
list.add(className);
}
}