0

我需要从 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 异常。有人可以让我知道我们应该如何将 jar 路径提供给 JarFile 构造函数吗?

4

2 回答 2

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);
            }
        }
于 2013-04-12T05:13:39.200 回答
0

尝试这个: JarFile jf = new JarFile("lib/xxxx-1.0.0.jar");

于 2013-04-11T05:23:57.570 回答