gpt4 book ai didi

java - 使用java反射获取包名

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:24 26 4
gpt4 key购买 nike

我想从一个单独的 Java 项目中获取所有包名称,我应该如何在 Java 中最好使用反射来做到这一点?

我已将项目导入我的构建路径,并尝试使用下面的代码获取包名称。

Package[] pack = Package.getPackages();

编辑:我没有使用 jar 文件,我刚刚导入了项目,因为它将位于同一目录中。我只需要我创建的包,特别是以特定目录开头的包。

最佳答案

仅使用 getPackages() 确实无法知道库中的每个包名称,因为它只会列出类加载器已知的包名称。这意味着如果某个类尚未从特定包中加载,那么它将不在列表中。

使用zip文件处理例程打开jar文件,按目录名读出包。使用此技术,您将发现所有包名称,甚至是那些尚未“使用”的包名称。基本上,任何包含 .class 文件的路径都是“包名”。

---- 编辑为进一步的详细信息表明未使用 JAR 文件 ---

因为您没有使用 JAR 文件(为什么不呢?它们真的很棒!),您将不得不扫描目录。要“查找”目录,您需要分割类路径。获取类路径的方法是:

 String classpath = System.getProperty("java.class.path", null);

然后您搜索每个“起点”下包含 .class 文件的所有目录。一旦你拥有了所有这些,你就拥有了所有的包。

同样,仅仅询问类加载器是不可能知道所有包的,除非你能以某种方式保证类加载器已经加载了所有的类(它通常不会)。

关于java - 使用java反射获取包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com