我正在研究依賴於第三方庫的軟件。由於許可協議,此庫不能隨軟件一起發貨,用戶在啓動程序時必須已在本地庫。Java:如果存在類,則在運行時檢查
有什麼辦法來檢查這個特定的庫是否存在於類路徑中,並且可以加載?如果沒有,我想提供一個對話框,允許用戶指向該位置並將此位置動態添加到類路徑中。
感謝您的幫助!
我正在研究依賴於第三方庫的軟件。由於許可協議,此庫不能隨軟件一起發貨,用戶在啓動程序時必須已在本地庫。Java:如果存在類,則在運行時檢查
有什麼辦法來檢查這個特定的庫是否存在於類路徑中,並且可以加載?如果沒有,我想提供一個對話框,允許用戶指向該位置並將此位置動態添加到類路徑中。
感謝您的幫助!
試試這個:
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();
}
計算時間,我知道的而言,最快的方式是:
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;
}
}
就解決了這個問題,在我的代碼,晚飯有用沒有引發異常。
@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;
}
}