问题描述
我有一个由 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));
}
}
}
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 (将#修改为@)