如何获取类路径上的包和/或类的列表?

2024-01-03

在 Java 中,我可以使用 ClassLoader 来获取已加载的类的列表以及这些类的包。但是如何获取可以加载的类的列表,即位于类路径上的类的列表?与包裹相同。

这是针对编译器的;在解析 foo.bar.Baz 时,我想知道 foo 是否是一个包,以将其与其他任何东西区分开来。


这有点棘手,有一些库可以提供帮助,但基本上......

  1. 查看你的类路径
  2. 如果您正在处理目录,则可以查找以 .class 结尾的所有文件
  3. 如果您正在处理一个 jar,请加载该 jar 并查找所有以 .class 结尾的文件
  4. 从文件末尾删除 .class,将“\”替换为“.”然后你就有了完全限定的类名。

如果你的类路径中有 spring,你可以利用它们已经完成了大部分工作:

ArrayList<String> retval = new ArrayList<Class<?>>();
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resolver);
String basePath = ClassUtils.convertClassNameToResourcePath("com.mypackage.to.search");
Resource[] resources;
try {
    resources = resolver.getResources("classpath*:" + basePath + "/**/*.class");
} catch (IOException e) {
    throw new AssertionError(e);
}
for (Resource resource : resources) {
    MetadataReader reader;
    try {
        reader = readerFactory.getMetadataReader(resource);
    } catch (IOException e) {
        throw new AssertionError(e);
    }
String className = reader.getClassMetadata().getClassName();
retval.add(className)   
}
return retval;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取类路径上的包和/或类的列表? 的相关文章

  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • java替代Thread.stop()来中断特定调用

    我正在寻找一种方法来告诉这个调用 大约需要 20 120 秒 final Area image final AffineTransform transform new AffineTransform transform scale imag
  • Java,将 null 分配给对象和仅声明之间有什么区别

    之间有什么区别 Object o null and Object o 仅声明 有人可以回答我吗 这取决于您声明变量的范围 例如 局部变量没有default values在这种情况下你将不得不分配null手动 在这种情况下实例变量分配 nul
  • 我们如何测试我们的 Java UI?

    我们正在寻找记录和回放类型的测试工具来自动化我们的一些 UI 功能测试 我们已经研究了从 Silke 到 QTP 的大多数常见嫌疑 但没有一个起作用 当需要右键单击才能从右键单击菜单中选择某些内容时 或者当您必须在网格的下拉列表中选择一个值
  • Jodatime 日期格式

    是否可以格式化 JodaTime 日期 这是代码 private static LocalDate priorDay LocalDate date1 do date1 date1 plusDays 1 while date1 getDayO
  • 确定代码是否在 App Engine 运行时 (Java) 上运行

    如何确定某些代码 Serv let 或简单的类 是否正在 Google App Engine 运行时 Java 上运行 以便决定是否使用 App Engine 的特定库 是否有一些可靠的运行时环境 ID 您可以检查com google ap
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • 在Java中使用BufferedWriter写入文件时监视文件大小?

    我正在将一个可能很长的项目列表写入文件 我正在写的项目的长度是可变的 如果生成的文件大小大于10M 则应将其分成多个文件 为了提高性能 我目前使用 BufferedWriter 如下所示 final FileOutputStream fos
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 计算移动的球与移动的线/多边形碰撞的时间(2D)

    我有一个多边形 里面有一个移动的球 如果球撞到边界 它应该反弹回来 My current solution I split the polygon in lines and calculate when the ball hits the
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • Microsoft JDBC 中的 JTDS 属性相当于什么?

    我正在将 JTDS 连接更改为 Microsoft JDBC 并且我看到存在于http jtds sourceforge net faq html http jtds sourceforge net faq htmlMicrosoft JD
  • Type.GetInterfaces() 仅适用于声明的接口

    首先 像这样的问题有很多 也许有些OP甚至在问同样的问题 问题是这些问题的答案 无论是否接受 都没有真正回答这个问题 至少我找不到 如何确定类直接声明的接口 而不是由父级或声明的接口继承的接口 e g interface I interfa
  • 升级到 Tomcat 8 时出现 ClassNotFoundException

    我最近将 NetBeans IDE 从 v7 3 升级到 v8 突然我的应用程序在连接到数据库时在服务器启动时抛出异常 这两个版本的 IDE 之间的唯一区别是后者使用 Tomcat 8 异常日志 javax naming NamingExc
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet

随机推荐

  • Python 2.6 聊天循环问题。无法同时接收和发送

    我正在尝试制作一个控制台聊天程序 但我的循环有问题 我无法同时获得输入和接收其他人的输入 如果一端发送了两条或更多消息 则另一端在发送一条消息之前无法接收下一条消息 我对 python 相当陌生 正在寻找正确方向的推动 我考虑过多线程 但这
  • 如何使用非 root 用户创建 postgres 容器?

    我想以非 root 用户身份运行 postgres 容器 默认情况下 该映像具有用户 postgres uid 999 当通过命令访问容器时docker exec it mycontainer bin bash 用户是root 为了使容器更
  • 如何在使用 node_save($node) 创建节点时将图像附加到节点;

    您好 我正在使用 drupal 7 并尝试通过使用 php 解析 xml 来导入数据 然后使用以下命令创建节点node save node 到目前为止 我已经成功地从 xml 创建节点 无需任何图像 我想在导入图像时将图像附加到节点 我知道
  • 将值从页面传递到用户控件

    我将姓名和姓氏存储在主页的两个标签中 我在一个类中也有这些值 类没有做太多事情 但我将它们用于将来的扩展 我有一个用户控件 它将发送一封以姓名和姓氏作为正文的电子邮件 我的问题是如何将标签或类变量值传输到用户控件的主体变量中 使用要传递给它
  • 混合 16 位线性 PCM 流并避免削波/溢出

    我尝试将 2 个 16 位线性 PCM 音频流混合在一起 但似乎无法克服噪音问题 我认为它们是在将样品混合在一起时溢出的 我有以下功能 short int mix sample short int sample1 short int sam
  • CPU和GPU的区别

    CPU的单个处理单元和GPU的单个处理单元有什么区别 我在互联网上看到的大多数地方都涵盖了两者之间的高级差异 我想知道每条指令可以执行哪些指令 它们的速度有多快 以及这些处理单元如何集成到完整的架构中 这似乎是一个答案很长的问题 所以很多链
  • 在 spring jpa 实体中保存级联实体后缺少值

    我对 Spring 和 JPA 等比较陌生 我试图在标签和客户之间创建多对多关系 双向 我想我的关系是正确的 除了一个问题之外 一切都运行良好 保存到数据库后 Tag 值为 Null 所以我正在做的是 向客户添加新的标签列表 然后使用级联选
  • javascript中的子对象函数

    我知道您可以使用子对象和函数创建文字对象 var obj val 1 level1 val 2 val2 3 func function return this val2 console log obj val console log ob
  • 创建 Javascript 日历(完整,不弹出)

    我在创建 javascript 约会样式日历时遇到一些困难 虽然它确实进行了渲染 但我知道会有一种更有效的方法来实现它 有人有用于创建日历的模式吗 我将使用 jQuery 但我不想使用某人的日历插件 因为 a 我还没有找到适合我需要的插件
  • 修复 Google 地图折线的编码字符串

    我有一个编码字符串 我想用它在谷歌地图中画一条线 但由于反斜杠等特殊字符 Javascript 无法读取该字符串 不幸的是我对Javascript没有太多经验 而且我不知道如何转义这些字符 编码字符串 qikrIehwu WOKEIAIBG
  • MVC 和 JQuery:检索表单数据的最佳实践

    我有一些 JQuery 使用 Ajax 将信息发送回我的控制器进行处理 我这样做是这样的 Define my controls Get the values from my controls var param1 pName val Def
  • 零散的响应与浏览器响应不同

    我正在尝试用 scrapy 抓取此页面 http www barnesandnoble com s dref 4815 sort SA startat 7391 我得到的响应与我在浏览器中看到的不同 浏览器响应有正确的页面 而 scrapy
  • Angular2 Pipe 转换货币

    我创建了一个使用 api 转换货币的方法 如下所示 exchange Input string Output string value number number let inputRate this currencyStorage get
  • 休眠错误:当前事务被中止,命令被忽略直到事务块结束

    我随机在 catalina out 日志中看到相同的错误 WARNING SQL Error 0 SQLState 25P02 Sep 8 2010 11 50 13 PM org hibernate util JDBCExceptionR
  • Android 上的推送通知负载中的 gcm.notification.e=1 代表什么?

    我正在编写一个 Android 应用程序 它使用 Google Cloud Messaging 从服务器接收下游消息 当收到消息时onMessageReceived我打印了捆绑包并阅读了以下内容 RECEIVED PUSH NOTIFICA
  • 如何从 docker credStore 检索密码?

    我在用着docker credential desktop存储我的远程 docker 注册表的密码 据我了解 此命令应该检索我的注册表密码和用户名 docker credential desktop get https index dock
  • Web 应用程序加入 Azure Web Marketplace

    我们检查了这个文档 https blogs msdn microsoft com appserviceteam 2016 08 26 onboarding to azure web marketplace https blogs msdn
  • .Net XML 模式验证是否应该在到达第一个无效元素时停止?

    我加载了一个 XML 字符串和一个架构并将其传递到一个函数中 我让它根据模式正确验证 XML 但是它总是在第一个无效元素的范围内停止验证 无效数据 它会继续下去 无效 缺失属性 会继续下去 但无效元素 它会停止 并且不会在该范围内进一步验证
  • 如何强制元素保持在同一行

    嗨 我有以下 css div container height 20px overflow hidden margin 15px 0px padding 5px 10px 5px 10px white space nowrap div co
  • 如何获取类路径上的包和/或类的列表?

    在 Java 中 我可以使用 ClassLoader 来获取已加载的类的列表以及这些类的包 但是如何获取可以加载的类的列表 即位于类路径上的类的列表 与包裹相同 这是针对编译器的 在解析 foo bar Baz 时 我想知道 foo 是否是