微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

现有 Groovy 类上的 ClassNotFoundException

如何解决现有 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 举报,一经查实,本站将立刻删除。