Java:如果类存在,则在运行时检查

时间:2014-11-21 12:04:35

标签: java class dependencies

我正在开发依赖第三方库的软件。由于许可协议,此库不能与软件一起发货,用户在启动程序时必须已在本地安装库。

有没有办法检查这个特定的库是否存在于类路径中并且可以加载?如果不是,我想提供一个对话框,允许用户指向该位置,并动态地将此位置添加到类路径。

感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:2)

我知道计算时间最快的方法是:

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

}

答案 2 :(得分:1)

如果某个类在运行时不存在,则会抛出ClassNotFoundException。 您可以通过以下方式检查。

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

答案 3 :(得分:-1)

刚刚解决了我的代码中的问题,晚餐很有用,没有引发异常。

  $smtp = new-object Net.Mail.SmtpClient("yourDomain.com") 
  $email = New-Object System.Net.Mail.MailMessage
  $email.From = "fromEmail@email.com"
  $email.To.Add("ToEmail@email.com")
  $email.Subject = "Enter  your Email Subject"
  $email.Body = "Enter the body of your email"
  $email.Priority = [System.Net.Mail.MailPriority]::High
  $smtp.Send($email)