【问题标题】:Java: Checking while run time if class exists [duplicate]Java:在运行时检查类是否存在[重复]
【发布时间】:2018-06-12 20:26:07
【问题描述】:

我正在开发一个依赖于 3rd 方库的软件。由于许可协议,该库不能与软件一起提供,用户在启动程序时必须在本地拥有该库。

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

感谢您的帮助!

【问题讨论】:

    标签: java class dependencies


    【解决方案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;
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        【解决方案3】:

        如果一个类在运行时不存在,它将抛出 ClassNotFoundException。 您可以通过以下方式进行检查。

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 不要将 e.printStackTrace() 用于生产代码。进行适当的异常处理/记录...
          猜你喜欢
          • 2011-08-30
          • 1970-01-01
          • 2011-10-26
          • 1970-01-01
          • 2015-05-24
          • 1970-01-01
          • 1970-01-01
          • 2014-03-15
          • 1970-01-01
          相关资源
          最近更新 更多