This question already has an answer here:
-
Check if class exists in Java classpath without running its static initializer?
1 answer
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!
Try this:
try {
Class<?> clazz = Class.forName("com.acme.SecretClass");
} catch (ClassNotFoundException e) {
// Show dialog
}
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;
}
}
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();
}
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;
}
}