【问题标题】:Iterating through all JDK classes遍历所有 JDK 类
【发布时间】:2015-07-12 01:02:34
【问题描述】:

我正在制作代码编辑器,并且正在处理自动完成功能。我想以编程方式获取 JDK 附带的所有类的列表。

示例包括:

java.io.File
java.util.ArrayList
javax.swing.Action

我找到了获取特定包的类的方法。例如,我可以获得所有以com.mypackage.foo 开头的类。问题是我正在尝试获取使用Bootstrap ClassLoader 加载的类。在 OSX JDK 上,该类加载器显示为 null。例如,如果我做String.class.getClassLoader(),那就是null

有什么想法吗?

【问题讨论】:

  • 这个SO question 可能会有所帮助。
  • 是的,我在谷歌搜索几个小时时看到了那个,哈哈。不想进行检测,因为它很hacky并且需要提供JVM args。底部的“hackerish”解决方案只提供已经加载的类。所以当我运行它时,它只显示了 2 个类,而不是数千个。

标签: java reflection classpath


【解决方案1】:

您可以使用 java.util.jar.JarFile 打开 rt.jar 并遍历其条目。这是获取 rt.jar 的 URL 的方法:URL url = Object.class.getResource("String.class");

【讨论】:

  • 我的程序如何知道 rt.jar 的位置?我希望它适用于所有操作系统和所有计算机,而不仅仅是我的。
  • getResource(String.class) 的做法似乎运作良好。这给出了 jar 的路径。所以我会用它来索引所有的类。谢谢!
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
相关资源
最近更新 更多