问题标签 [bcel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 重命名事物
如何使用 BCEL 重命名事物?到目前为止,我所做的是遍历类中的每个方法并在常量池中创建一个新的 NameAndType 常量,然后用那个替换旧的 NameAndType 常量
这似乎应该可以工作,但我的反编译器告诉我常量池在此之后已损坏。我错过了一步还是什么?
javascript - 是否有用 javascript 实现的 Java 字节码阅读器?
我知道有很多库可以读取用 Java 编写的字节码。有人知道用 Javascript 实现的字节码库吗?
java - Java Service Provide API 应该如何工作?
似乎每个人都对Java Service Provider有过不愉快的印象,你可以用一个名为 META-INF/services/com.example.Interface 的文件来做这件事,但是除了尝试加载正确的 XML 解析器之外,没有人使用它. 我正在尝试使用一个使用服务提供程序 API 的库,并对其进行欺骗,以便我可以提供一些运行时扩展类(使用 cglib),这些类实际上并未实现接口,但可以轻松实现。
基本上,我认为我需要执行的步骤是:
- 创建一个自定义类加载器,它将响应 getResources(...) 并返回一个“额外”URL
- 当被要求提供“额外”资源时,还有那个类加载器挂钩 getResourceAsStream(...) 以返回我将使用 cglib 操作的类的列表
- 最后,让该类加载器在请求时加载这些类
但这就是我迷路的地方。例如,当库试图确定有哪些实现者时,它会调用 getResources(...) 来返回一堆 URL。但是 getResourceAsStream(...) 不需要 URL,它需要“名称”。似乎是类路径相关的名称,因此在任何地方都相同。所以 META-INF/services/com.example.Interface 与他们的 JAR 中的 META-INF/services/com.example.Interface 具有相同的“名称”,对吧?除了不知何故这适用于那些爆破的 XML 解析器......
当然,所有这些都假设他们足够聪明/友善地调用 ClassLoader.getSystemClassLoader() 而不是使用 ClassLoader.getSystemResources(...)、ClassLoader.getSystemResourceAsStream(...) 等,因为在后一种情况下有没有办法挂钩 ClassLoader 并提供伪造的文件。
我想在那种情况下,当我的代码被 Maven 打包时,我可以使用 BCEL 来操作类文件,而不是等到运行时使用 cglib 来操作?
java - Java:使用 BCEL 为每个方法添加调试调用
我正在使用 BCEL 尝试将 System.out.println() 调用添加到每个方法的第一行(init 和 clinit 方法除外),以查看调用了哪些方法以及何时调用
这是我的代码 atm(带有一些伪):
编辑后的类在字节码中看起来不错,但由于某种原因,该类在此之后将无法工作。有什么我做错了吗?
java - 控制行号时使用什么字节码库?
我需要从现有类生成新类(通过生成 java 字节码)。我将分析一个类的方法的主体(表达式)。表达式将决定我将生成什么代码。
对我来说,重要的是为新类设置源文件(与基本 java 文件相同)以及控制行号(当抛出异常时,堆栈跟踪应包含基本 java 文件的行号)。
示例:我有文件BaseClass.java。编译器由此生成一个BaseClass.class。我想分析这个类文件并为GeneratedClass.class 生成字节码。当在c处引发异常时,堆栈跟踪应包含“BaseClass.java line 3”。
我的问题:是否有支持此要求的库?Javassist、ASM 还是 BCEL?为此目的使用什么?提示如何做到这一点或示例代码将特别有帮助。
编辑: 提示不要使用什么库,因为无法满足要求也会有帮助:)。
java - 在运行时(动态)创建简单的 POJO 类(字节码)
我有以下场景..
我正在编写一些工具,对数据库运行用户输入的查询并返回结果..
最简单的方法是将结果返回为:List<String[]>
但我需要更进一步。
我需要创建(在运行时)一些具有某些名称的 POJO(或 DTO),并为其创建字段、setter 和 getter,并使用返回的数据填充它,然后将其与.class
生成的文件一起返回给用户......
所以这里的想法是如何在运行时(动态地)创建简单的类(字节码) 我做了一个基本的搜索,发现了很多库,包括 Apache BCEL但我认为我需要更简单的东西......
你对那个怎么想的?
谢谢。
java - 使用 BCEL 库提取变量名
嗨,我正在使用 bcel 库来读取字节码。我需要提取变量名称。
知道怎么做吗?
java - 使用 BCEL 调用方法
这个社区中是否有任何专家与 BCEL 合作过,并且可以指导我使用 BCEL 调用方法 ,就像我们使用 java 反射一样。
注意:为了支持您的回答,任何类型的书籍或网络参考资料都将成为很好的帮助来源。
现在我看到了一个名为Visitor的接口 ,其中包含方法visitInvokeInstruction() 现在有一种方法可以让我调用这些指令(在堆栈上形成一个方法)。
希望这段代码能给你很多我想要的解释。
提前致谢
java - 如何在 BCEL 中将整数推送到堆栈上
我在 BCEL 中将整数压入堆栈时遇到问题。我有一个方法_square的 someClass 即“ mathClass ”
谢谢
java - 我们可以在 BCEL 的堆栈操作数上推送自定义类型对象吗?
在 BCEL 中,我们可以在 Operand Stack 上推送原始类型。但是现在我想知道是否可以在 BCEL的堆栈上推送自定义类型对象?
我给出了一些代码,以便它可以解释问题上下文
1-如果我使用 createNew() 方法并生成新对象,那么我将如何填充其字段值?2-或者,如果我首先使用 PUSH 将引擎类型 Obj 的所有字段值推送到堆栈上,那么我可以了解如何在内存上构造对象然后将其推送到堆栈上。这些是我能想到的一些解决方案。
但我不知道正确的解决方案所以仍然需要帮助......