【发布时间】:2018-06-12 20:26:07
【问题描述】:
我正在开发一个依赖于 3rd 方库的软件。由于许可协议,该库不能与软件一起提供,用户在启动程序时必须在本地拥有该库。
有没有办法检查这个特定的库是否存在于类路径中并且可以加载?如果不是,我想提供一个对话框以允许用户指向该位置并将该位置动态添加到类路径中。
感谢您的帮助!
【问题讨论】:
标签: java class dependencies
我正在开发一个依赖于 3rd 方库的软件。由于许可协议,该库不能与软件一起提供,用户在启动程序时必须在本地拥有该库。
有没有办法检查这个特定的库是否存在于类路径中并且可以加载?如果不是,我想提供一个对话框以允许用户指向该位置并将该位置动态添加到类路径中。
感谢您的帮助!
【问题讨论】:
标签: java class dependencies
就我所知的计算时间而言,最快的方法是:
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;
}
}
【讨论】:
试试这个:
try {
Class<?> clazz = Class.forName("com.acme.SecretClass");
} catch (ClassNotFoundException e) {
// Show dialog
}
【讨论】:
如果一个类在运行时不存在,它将抛出 ClassNotFoundException。 您可以通过以下方式进行检查。
try {
Class cls = Class.forName("yourClassName");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
【讨论】:
刚刚解决了我代码中的问题,超级有用,没有引发异常。
@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;
}
}
【讨论】: