Java: Checking while run time if class exists [dup

2019-02-26 21:18发布

This question already has an answer here:

I am working on a software which depends on an 3rd party library. Due to license agreements this library cannot be shipped along with the software and the user has to have the library already locally when starting the program.

Is there any way to check if this particular library exist in the class path and can be loaded? If not I would like to offer a dialog to allow the user pointing to the location and add this location to the class path dynamically.

Thanks for your help!

4条回答
仙女界的扛把子
2楼-- · 2019-02-26 21:38

Just solved the problem in my code, supper useful without raising an exception.

@SuppressWarnings("finally")
private boolean existClass(String className){
    Class<?> classname= null;
    try {
        classname = Class.forName(className);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } finally{
        if(classname == null) 
            return false;
        else 
            return true;
    }
}
查看更多
\"骚年 ilove
3楼-- · 2019-02-26 21:47

Try this:

try {
    Class<?> clazz = Class.forName("com.acme.SecretClass");
} catch (ClassNotFoundException e) {
    // Show dialog
}
查看更多
狗以群分
4楼-- · 2019-02-26 21:52

If a class is not present at runtime,it will throw ClassNotFoundException. You can check for this in the following way.

try {
    Class cls = Class.forName("yourClassName");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
查看更多
The star\"
5楼-- · 2019-02-26 21:56

The fastest way in terms of computing time I know is:

public class ClazzUtil {

    public static boolean isClassnameAvailable(String clazzName) {
        try {
            Class.forName(clazzName, false, ClazzUtil.class.getClassLoader());
        } catch (LinkageError | ClassNotFoundException e) {
            return false;
        }
        return true;
    }

}
查看更多
登录 后发表回答