现有 Groovy 类上的 ClassNotFoundException

问题描述

我有一个由 gradle 构建创建的类库。它们是为与 github 交互而构建的 REST 库的一部分。以下所有类都属于同一个包:

  • FileContentUpload.class
  • GitHubMember.class
  • 标签.class
  • PRstate.class
  • PullRequest.class
  • RateLimitCore.class
  • RateLimitResources.class
  • Repository.class
  • ReviewState.class
  • 树.class
  • TreeList.class
  • 用户
  • 每周贡献.class
  • Blob.class
  • 分支.class
  • BranchUpload.class
  • 提交.class
  • 内容.class
  • Event.class

这些类构建并可以成功使用。我需要在 groovy 脚本中获取类以从中获取数据。为此,我尝试了两种不同的方法。第一种方法是进入文件夹,直接从文件中取出类:

File[] files = directory.listFiles()
    for (File file : files) {
        def fileName = file.getName()
        def fullyQualifiedname = file.getAbsolutePath()

        if (file.isDirectory() && !fileName.contains(".")) {
            classes.addAll(findClasses(file));
        } else if (fileName.endsWith(".class") && !fileName.contains("\$")) {

            if (fullyQualifiedname.contains("main")) {

                fullyQualifiedname = fullyQualifiedname.substring(fullyQualifiedname.indexOf("main") + 5).replace("\\",".")
                fullyQualifiedname = fullyQualifiedname.substring(0,fullyQualifiedname.size() - 6)

                classes.add(Class.forName(fullyQualifiedname));
            }

        }
    }

第二种方法是查看 jar 并从中提取类:

        JarFile jar = new JarFile("C:\\work\\RestLibrary\\build\\libs\\RestLibrary.jar")
        for (j in jar.entries())
        {
            if (j.getName().endsWith(".class") && !j.getName().contains("\$"))
            {
                def x = j.getName()
                x = x.replace("/",".").substring(0,x.size() - 6)
                def c = Class.forName(x)
                theList.add(c)
            }
        }

这两个结果相同。在 RateLimitCore 和 RateLimitResources 类上,我得到一个 ClassNotFoundException。这是我目前观察到的:

我真的很困惑,当这两个类特别存在时,据我所知,它们与包中的任何其他类没有任何不同。任何关于如何区分它们的不同之处的建议都会对我有很大帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)