gpt4 book ai didi

java - 在 jar 中运行类时从 jar 中获取所有 .class

转载 作者:行者123 更新时间:2023-11-29 09:11:37 35 4
gpt4 key购买 nike

所以,问题听起来是这样的:

我需要在我的项目中获取所有具有特定注释的类。我已经设法在没有任何外部库的情况下做到这一点(我从字面上获取了 src 文件夹中的所有 .class 文件并检查该类是否有注释)。当我在本地运行它时它工作正常(作为 java 应用程序运行)。当我将我的项目导出为 .jar 并尝试运行相同的类时,它当然不起作用,因为我的解析器找不到任何类。基本上,现在我试图在运行同一个 jar 时获取 jar 文件中的所有 .class 文件。有没有什么方法可以在不添加另一个库(如反射)的情况下做到这一点?

谢谢

最佳答案

如果您真的觉得需要重新发明轮子,那么第 3 方库仍然可以为您提供帮助,因为它们中的大多数都是开源的。特别是this是 Spring 的类路径扫描器实现,它利用了 this实际查找资源的类。

如果你真的想在实现上没有任何差异,那么你可以按照 martijno 的建议,先解压 jar。但是,如果 jar 不在您的类路径中,那么您将需要类似 URLClassLoader 的东西从 jar 加载类。

另一种方法是更改​​您当前的实现以扫描类路径。这涉及使用 ClassLoader.getResources方法来查找给定包中的所有类和子包。然后,无论您使用的是文件还是 jar,您所要做的就是获得一个包含您想要的类的类加载器(例如 URLClassLoader)(或者如果它们在类路径上,则使用系统类加载器)。

关于java - 在 jar 中运行类时从 jar 中获取所有 .class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12053406/

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