2

所以,问题听起来像这样:

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

谢谢

4

1 回答 1

0

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

如果您真的想在实现中没有任何差异,那么您可以按照 martijno 的建议采取一种方法,首先提取 jar。但是,如果 jar 不在您的类路径中,那么您将需要URLClassLoader之类的东西来从 jar 加载类。

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

于 2012-08-21T13:04:23.560 回答