使用类名查找Jar名称

时间:2016-09-15 12:09:53

标签: java class jar build classpath

我试图找出使用类名的jar名称。假设我将类Name作为“Socket”或“LinkedList”作为String。所以我想知道如何找出它属于哪个罐子,s。 我试图通过这种方式找出

 public static String getModuleName(Class classname) {
    String modulename = null;
    URL resource = classname.getResource('/' + classname.getName().replace('.', '/') + ".class");
    System.out.println(resource.getPath());
    String[] split = resource.getFile().split("/");
    for (String string : split) {
        if (string.contains("jar")) {
            modulename = string.replace("!", "");
        }
    }
    return modulename;

}

在这个方法中,如果我正在传递

    Class class1 = String.class;
    System.out.println(getModuleName(class1));

它给了Jar名字,但是它给了jar名字,但是对于某些要求,我没有像“String.class”那样只有字符串“String”。 从这个字符串中,怎么知道它属于哪个罐子。

由于

1 个答案:

答案 0 :(得分:0)

你可以做的是获取字符串输入,然后添加.class,它们使用Class.forName将其转换为类对象(完全限定名称)。

String classstring = oldstring + ".class";
Class<?> class1 = Class.forName(classstring);
System.out.println(getModuleName(class1));

或者

String classstring = oldstring;
ClassLoader cloader;
Class class2 = cloader.loadClass(classstring);
System.out.println(getModuleName(class2);