问题标签 [bytecode-manipulation]

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.

0 投票
1 回答
319 浏览

eclipse - 在eclipse中生成的java代码自动完成

我想让自动生成的代码可用于 Eclipse 编辑器以自动完成

以下案例:

1) 描述数据模型的 XML 文档和 java 处理器正在创建 java 源代码。现在我需要运行 ant 脚本来创建 java 源代码。这可能是由更改 xml 文档触发的吗?

2) apt 处理器用新方法扩展类。是否可以将 apt 处理器注册到 jdt?

3) 检测的 java 字节码创建新方法。是否可以通过正在进行字节码编织的类加载器读取自动完成?

0 投票
5 回答
9058 浏览

android - 是否可以在 android 应用程序中注入代码?

我想在运行时在 android 应用程序中注入代码。我曾尝试使用 dx 工具在 sdcard 中生成 dexfile,但是当我想实例化时,它失败了。是否有任何工具可以注入代码生成新的 dalvik 字节码?我正在研究一些库、aspect 或 guice for android。使用脚本语言会更好吗?

谢谢人们:)

0 投票
1 回答
267 浏览

python - 关于生成器表达式和速度高效替代方案的几个问题

考虑下面的代码,它是我下面问题的一部分:

我的问题基于标记为“#Q”的陈述:

Q1:很明显,生成器已完全实例化(所有元素都被执行),正如我们调用sorted()它(它生成所有元素并创建一个临时未排序列表,它排序并作为新列表返回?)。

有没有一种节省空间的方法,可以最大限度地减少临时对象的创建产生排序列表?

我尝试过,但无法编写一个可以使用就地排序的列表理解list.sort()

这是我在想的那种表达方式:

Q2:请注意,'aFunc' 只是 'bFunc' 的包装,因为我无法在functools.partial( aFunc )调用中编写等效表示。

functools.partial( aFunc )我正在寻找的“aFunc”表达式是什么,可以让我直接调用“bFunc”


编辑:Q2 的答案是lambda ( v, m, s ): bFunc(s.something, 10)

因此,语句变为:

我知道这似乎有点蹩脚,我之前没有想到这个,但是哦,好吧(感谢 aaronasterling 的温和刺激)。


Q3, Q4:请注意,传递给 min() 和 max() 的元素已经排序。

我是否可以对 min() 和 max() 进行此提示,以便它不会将整个列表作为临时实例实例化,然后遍历整个列表以定位 min 或 max 元素?

如果没有,是否存在不实例化整个列表的模块或自定义函数,但是,鉴于传递给它的列表已排序,在检查最少数量的元素时返回最小或最大元素

0 投票
1 回答
299 浏览

java - 为原始数据或二进制读写创建框架

我正在做一个项目,其中数据必须以二进制格式读取,但可以放入结构格式。在 java 结构中不可用。我已经以字节数组的形式发送数据。它也有一些结构。

例如

MessageData MessageHeader MessageBody

MessageHeader int data1 long data2 char[] data3//2bytes char[] data4//3 bytes

MessageBody 相同

但是数据应该打包在字节数组中。

可以在 CPP 中作为

我必须在java中实现。

为了读取数据,我正在使用Preon

但是对于写入数据,我仍然使用常规方法在字节数组中打包数据,并借助某些功能任何人都在从事同类项目或有更好的想法

0 投票
1 回答
533 浏览

plugins - 在 PlayPlugin.enhance 期间找不到类的问题

我正在尝试在 Play 插件中进行基本的字节码增强,但是当它尝试对其提供的内容进行操作时,ApplicationClasses.ApplicationClass找不到该类。

例外是

Play 框架正在调用该enhance方法。它不应该比处理尚不可用的类更好吗?我如何让这个工作?

0 投票
1 回答
3685 浏览

grails - grails中的非法常量池索引错误

我有一个已部署在我的 linode 盒子上的 grails 应用程序。它运行了几天,但现在在所有页面上都出现此错误:

谷歌搜索表明这是一个编织问题,但不是如何解决。有没有人遇到过类似的事情?

0 投票
2 回答
901 浏览

java - 追溯主动向方法添加 Java 注释?

有没有办法修改 .class 文件以便为某些方法添加 Java 注释?基本上我想遍历jar文件中每个类文件的方法并注释某些。请注意,这不是在运行时使用 jar 文件。相反,在我完成后,我想修改带有注释的类文件。

我确实可以访问源代码,所以如果有一个自动源代码修改器,那也可以......

我假设我需要一个工具,例如JavassistASM。如果是这样,我应该使用哪一个,我将如何去做?

0 投票
1 回答
1258 浏览

java - 为什么流行的框架在内部使用字节码操作?

我听说许多框架(Struts、Spring、Hibernate、AspectJ)在内部使用字节码操作。使用字节码操作的令人信服的理由是什么?我期待每个特定框架至少有一个用例的答案。

0 投票
1 回答
278 浏览

java - 构建时间检测和加载时间检测之间的区别

现在我一直在研究简单的字节码检测机制,以了解我的知识,并希望在我公司未来的项目中使用它们。

我已经浏览了几篇在线可用的文章。但我对构建时间和加载时间这个术语感到困惑。

如果有人澄清这些术语的含义,我将不胜感激

谢谢,

努万阿兰巴奇

0 投票
5 回答
314 浏览

programming-languages - 哪些编程语言可以让我操纵方法中的指令序列?

我有一个即将到来的项目,其中一个核心要求是改变方法在运行时的工作方式。请注意,我不是在谈论更高级别的 OO 概念,例如“一种方法与另一种方法的影子”,尽管实际效果是相似的。

我追求的关键属性是:

  • 我必须能够修改方法,以便添加新表达式、删除现有表达式或修改其中发生的任何表达式。

  • 修改方法后,对该方法的后续调用将调用新的操作序列。(或者,如果语言绑定方法而不是每次都评估,请为我提供一种取消绑定/重新绑定新方法的方法。)

  • 理想情况下,我想操作语言的原子单元(例如,“foo在对象上调用方法bar”)而不是直接操作程序集(例如“将这三个参数弹出到堆栈上”)。换句话说,我希望能够高度确信我构造的操作在语言中具有语义意义。但我会拿走我能得到的。

如果您不确定候选语言是否符合这些标准,这里有一个简单的试金石:

你能写另一种方法吗clean

  • 接受一个方法m作为输入

  • 返回另一个m2执行相同操作的方法m

  • 是否m2与 相同m,但不包含对您的语言中的 print-to-standard-out 方法的任何调用(puts、System.Console.WriteLn、println 等)?

我现在想做一些初步研究,找出最强的候选人是什么。拥有一个庞大而活跃的社区对我来说与实现我想做的事情的实用性一样重要。我知道这里可能有一些未伪造的领域,因为直接操作字节码通常不是需要公开的操作。

我有哪些选择?如果可能,您能否提供一个使用您推荐的一种或多种语言的玩具示例,或者指向我最近的一个示例?


更新:我这样做的原因是我想编写一个能够在运行时修改自身以响应新信息的程序。这种修改超越了单纯的参数或可配置数据,而是全面的、进化的行为变化。(不,我不是在写病毒。;))