从字节码解析类名

2023-12-02

是否可以从类源代码形成的字节码中挖掘类名称?

情况是这样的:我从某个地方远程获取类字节码,它来自哪里并不重要。为了使用类加载器有效地加载该类,我还需要类名......对吗?


如果您只需要类名,那么您自己解析类文件的开头可能会更容易,而不是为此目的添加用于类代码操作的第 3 方库。您只需要常量池中的类和字符串,跳过访问标志,然后将 / 替换为 。在类名中。如果你有一个字节数组,你可以调用这个方法new ByteArrayInputStream(byteArray):

public static String getClassName(InputStream is) throws Exception {
    DataInputStream dis = new DataInputStream(is);
    dis.readLong(); // skip header and class version
    int cpcnt = (dis.readShort()&0xffff)-1;
    int[] classes = new int[cpcnt];
    String[] strings = new String[cpcnt];
    for(int i=0; i<cpcnt; i++) {
        int t = dis.read();
        if(t==7) classes[i] = dis.readShort()&0xffff;
        else if(t==1) strings[i] = dis.readUTF();
        else if(t==5 || t==6) { dis.readLong(); i++; }
        else if(t==8) dis.readShort();
        else dis.readInt();
    }
    dis.readShort(); // skip access flags
    return strings[classes[(dis.readShort()&0xffff)-1]-1].replace('/', '.');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从字节码解析类名 的相关文章

  • 从 PDF 中提取不可选择的内容

    我正在使用 Apache PDFBox 从 PDF 文件中提取页面 但找不到提取不可选择的内容 文本或图像 的方法 从 PDF 文件中选择内容是没有问题的 请注意 相关 PDF 在复制内容方面没有任何限制 至少从我在文件的 文档限制摘要 中
  • 将比较器对象存储在数组中

    我为我的对象定义了 4 个比较器 如下所示 public static Comparator
  • JPA 实体中的方法是否允许抛出异常?

    我尝试创建的 Entity 有问题 当尝试使用 OpenJPA 实现在 Eclipse 中测试类时出现问题 我有not尝试过其他人 所以不确定它是否适用于他们 我的测试用例非常简单 因为它创建一个 EntityManagerFactory
  • 在 Java 中重置 Graphics2D 对象

    我正在用 Java 尝试 Graphics2D 但像往常一样 我被困住了 P 问题是 假设我有这个代码 Graphics2D g Graphics2D this getGraphics Inside a JFrame g rotate Ma
  • 如何检测线程是否被IO阻塞?

    在Java中 线程可以有不同的状态 新的 可运行的 阻塞的 等待的 TIMED WAITING 的 终止的 然而 当线程被IO阻塞时 其状态为 RUNNABLE 如何判断是否被IO阻塞 NEW 线程已创建但尚未处理 可运行 线程正在占用CP
  • java中如何围绕另一个移动对象旋转一个对象?

    我对 Java 很陌生 想要编写一个简单的太阳系统 其中月球绕地球旋转 地球绕太阳旋转 一切正常 除了月亮不想正确移动 由于地球偏离月球的初始位置 月球的自转半径会根据该距离而增大 同样 当地球接近月球惯性位置时 自转半径会减小 如果初始位
  • JSP重定向和传值

    我有一个 JSP 其中我重定向到另一个 jsp 例如 我在该jsp中没有任何其他数据 我想将值从该jsp index jsp 传递到重定向jsp login jsp 我将如何做到这一点 这里的 logonInput 是在struts con
  • Android - Java - 发送 facebook 聊天消息的意图(facebook 禁用 xmpp)

    Facebook 已弃用 xmpp API 有没有办法打开意图 或将数据传递到fb 以在Android设备上发送聊天消息 设备上安装的 Facebook 和 Messenger 应用 谢谢 您需要将 uri 传递给意图 这里10000572
  • Java 创建 Thread 实例时会发生什么

    我有一个关于 Java 线程和操作系统线程的问题 我读了Java 线程与 Pthreads https stackoverflow com questions 5269535 java threads vs pthreads and Jav
  • 如何提高 Guice 启动时的性能

    好吧 我知道我的计算不客观等等 但无论如何 我讨厌在执行单元测试时等待这么多时间 我的 guice swing 应用程序需要大约 7 秒来初始化 这是一个简单的 IRC 客户端 在那一刻 没有打开连接 我什至还没有调用任何 java io
  • 从外部 clojar 导入/使用资源

    我想做的是将一个大文件 MIDI 声音字体 打包到一个独立的 Maven repo clojar 中 然后能够以编程方式将其拉下来并从单独的项目中使用它 事实证明 这个看似简单的任务比我想象的要复杂 理想的情况是 如果有一种方法可以直接访问
  • 从 Java 调用 Python 代码时出现问题(不使用 jython)

    我发现这是从 java 运行 使用 exec 方法 python 脚本的方法之一 我在 python 文件中有一个简单的打印语句 但是 我的程序在运行时什么也没做 它既不打印Python文件中编写的语句 也不抛出异常 程序什么都不做就终止了
  • 如何在最短的时间内克隆java中的输入流

    有人可以告诉我如何克隆输入流 并花费尽可能少的创建时间吗 我需要多次克隆输入流以使用多种方法来处理 IS 我尝试了三种方法 但由于这样或那样的原因 事情不起作用 方法 1 感谢 stackoverflow 社区 我发现以下链接很有帮助 并将
  • SOAP Web 服务中的用户身份验证

    我提出了一个关于JAX WS 身份验证和授权 如何 https stackoverflow com questions 5314782 jax ws authentication and authorization how to 讨论了安全
  • 在Java中一个接一个地播放WAV文件

    我正在尝试玩几个WAV http en wikipedia org wiki WAV文件一个接一个 我尝试了这个方法 for String file audioFiles new AePlayWave file start 但这会同时播放它
  • 如何迭代SparseArray?

    有没有办法迭代 Java SparseArray 适用于 Android 我用了sparsearray通过索引轻松获取值 我找不到 看来我找到了解决方案 我没有正确注意到keyAt index 功能 所以我会这样做 for int i 0
  • 仅在java中使用数组计算50的阶乘

    我是java的初学者 我有一个作业要编写一个完整的程序 使用数组计算 50 的阶乘 我无法使用像 biginteger 这样的任何方法 我只能使用数组 因为我的教授希望我们理解背后的逻辑 我猜 然而 他并没有真正教我们数组的细节 所以我在这
  • 用于将字符串与通配符模式进行匹配的递归函数

    所以我一整天都在试图解决这个作业 只是无法完成 以下函数接受 2 个字符串 第二个 不是第一个 可能包含 的 星号 An 是字符串的替换 空 1个字符或更多 它可以出现 仅在s2中 一次 两次 更多或根本不出现 它不能与另一个相邻 ab c
  • Spring Data JPA 和 Exists 查询

    我正在使用 Spring Data JPA 使用 Hibernate 作为我的 JPA 提供程序 并想要定义一个exists附加 HQL 查询的方法 public interface MyEntityRepository extends C
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr

随机推荐

  • Nodejs - Express res.download 给出发送异常后无法设置标头

    我想制作一个可以为任何扩展名的文件提供服务的 api 像这样 http localhost download 文件 扩展名 这是我的代码 但它间歇性地给出此消息 发送后无法设置标头 var express require express v
  • Python:如何从导入的模块调用全局函数

    Python 3 中可以从导入函数调用全局函数吗 folders folder1 def py def do test print def do test global function 1 print def do test main p
  • 将 Rust 中的浮点值限制为最小/最大范围

    给定一些任意的浮点值 将该值限制在最小 最大范围的惯用方法是什么 IE 如果您提供的值低于最小值 则返回最小范围值 如果您提供的值大于最大值 则返回最大范围值 否则返回原始浮点值 我认为这种方法可行 但它没有给我正确的值 fn main d
  • 尝试更改 WPF 中绑定的 RadioButton 时出现奇怪的行为

    我在我的中绑定了两个单选按钮Child窗口到Enum in my ViewModel它是在主窗口中构建的 绑定按预期工作 但我注意到一个非常奇怪的行为 我无法解决 我在这里提供了所有代码 以便您可以轻松地自己重构问题 以下是查看这种奇怪行为
  • 应用程序进入后台后每 n 分钟获取用户位置

    我正在努力实施中给出的建议这个帖子 不幸的是 我不清楚这些步骤 我尝试实施这些建议 但即使在启动和停止 locationServices 后 backgroundTimeRemaining 仍继续减少 我是这样开发的 void applic
  • Android 是否按升序或降序覆盖资源文件?

    Android 有各种文件夹来设置其资源 例如 values small values normal values large drawable mdpi drawable hdpi drawable xhdpiAndroid 如何从这些文
  • 循环遍历 Excel 中某个范围的每一行

    这是我确信有一个内置函数的事情之一 而且我很可能在过去被告知过 但我正在挠头去记住它 如何使用 Excel VBA 循环遍历多列范围的每一行 我一直在搜索的所有教程似乎都只提到在一维范围内工作 Dim a As Range b As Ran
  • 运行作业时的参数解释

    h host1 example com code Get WmiObject Class Win32 ComputerSystem Namespace root cimv2 ComputerName h timeout 5 jobstate
  • 在 Foreach 循环中递增变量并使用它-SSIS

    我有一个包 我正在使用 foreach 循环来循环数据库 我正在传递一个字符串 它会循环遍历所有数据库 到这里一切都很完美 我想要实现的是 对于它循环的每个数据库 它应该将变量增加 1 假设我必须循环遍历总共 5 个数据库 包级变量 myv
  • 等待 Firebase 检索数据[重复]

    这个问题在这里已经有答案了 我想构建一个返回a的方法childFirebase 中的值 我尝试做这样的事情 public String getMessage root child MessagesOnLaunch child Message
  • 通过RedBean批量插入mysql

    如何运行以下sqlRedBean INSERT INTO tbl name a b c VALUES 1 2 3 4 5 6 7 8 9 我应该使用循环还是RedBean支持批量插入 RedBeanPHP 的创建者在这里 RedBeanPH
  • 在 Adob​​e AIR for iOS 中获取唯一标识符(MAC 地址、UDID 等)

    我正在尝试在适用于 Android 和 iOS iPad 2 的 Adob e AIR 应用程序中获取用户设备网络适配器的 MAC 地址 在 Android 中它可以正常工作 但在 iOS 中却不能 这是我正在使用的代码 var vNetw
  • 从unittest.TestCase切换到tf.test.TestCase后的幻像测试

    以下代码 class BoxListOpsTest unittest TestCase Tests for common bounding box operations
  • Sparklyr:如何将列表列分解为 Spark 表中自己的列?

    我的问题与中的问题类似here 但我在实现答案时遇到问题 并且我无法在该线程中发表评论 因此 我有一个包含嵌套数据的大 CSV 文件 其中包含由空格分隔的 2 列 假设第一列是 Y 第二列是 X X 列本身也是一个逗号分隔值 21 66 2
  • OS X Yosemite 中 setenv 和 getenv 的奇怪行为

    当我设置环境变量时 launchctl setenv FOO test 我可以通过以下方式获取值 launchctl getenv FOO 这返回我 测试 但是一个简单的 echo FOO 不替换 结果为空 在同一航站楼以及新航站楼中 背景
  • 全局变量被炼金术打破了?

    看起来Adobe炼金术没有运行全局构造函数 这是一些简单的测试代码 include
  • 更改通过 JsonExtensionData 加载的数据的键名称[重复]

    这个问题在这里已经有答案了 我有一个由系统数据和用户条目混合而成的 JSON 如下所示 Properties Type A Name aaa lorem ipsum 7 1 Type B Name bbb sit amet XYZ Type
  • 根据文件扩展名验证文件

    我从 Java 队列中获取文件 它们可能具有以下格式 docx pdf doc xls xlsx txt rtf 阅读它们的扩展名后 我想验证它们是否确实是这些类型的文件 例如 我收到一个文件并检查其扩展名是否为 xls 之后 我想检查它是
  • 在打印机兼容的设备上下文中调用 Windows SelectObject 返回 NULL

    最近的 Windows 10 更新 可能也是神秘的 KB4577586 似乎已经产生了引起调用的效果选择对象使用位图句柄作为参数 在打印机兼容的设备上下文中执行时返回 NULL 相关行可以在这个中看到位图打印示例 它在早期的 Windows
  • 从字节码解析类名

    是否可以从类源代码形成的字节码中挖掘类名称 情况是这样的 我从某个地方远程获取类字节码 它来自哪里并不重要 为了使用类加载器有效地加载该类 我还需要类名 对吗 如果您只需要类名 那么您自己解析类文件的开头可能会更容易 而不是为此目的添加用于