2014-11-21 15 views
1

我正在研究依賴於第三方庫的軟件。由於許可協議,此庫不能隨軟件一起發貨,用戶在啓動程序時必須已在本地庫。Java:如果存在類,則在運行時檢查

有什麼辦法來檢查這個特定的庫是否存在於類路徑中,並且可以加載?如果沒有,我想提供一個對話框,允許用戶指向該位置並將此位置動態添加到類路徑中。

感謝您的幫助!

回答

2

試試這個:

try { 
    Class<?> clazz = Class.forName("com.acme.SecretClass"); 
} catch (ClassNotFoundException e) { 
    // Show dialog 
} 
1

如果一個類不存在在運行時,它會拋出ClassNotFoundException異常。 您可以通過以下方式檢查。

try { 
    Class cls = Class.forName("yourClassName"); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 

Please refer this for detailed explanation! 。

1

計算時間,我知道的而言,最快的方式是:

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; 
    } 

} 
-1

就解決了這個問題,在我的代碼,晚飯有用沒有引發異常。

@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; 
    } 
} 
相關問題