问题标签 [javassist]

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 回答
169 浏览

java - Java 将日志写入文本

目前,我正在使用记录器检测方法以跟踪一些信息,但在将日志输出提取到文本文件中时遇到问题。

我正在做的是检测每个方法,logger.info但是当您想要添加处理程序时它不起作用,因为这将为每个方法添加重复的处理程序。我现在使用insertBefore()来自 Javassist 的方法作为检测部分,它是这样的:

insertBefore("Loggers and some implementations");- 这意味着记录器/实现在运行之前在每个方法中完成,这意味着如果我要在此处添加处理程序,将有许多与方法数量相同的处理程序,并且重复给我错误。

0 投票
1 回答
1739 浏览

spring - Entity-Classes 什么时候增强,有什么用?jpa, 春天, 休眠, javassist

我正在使用 spring 3.0.6、jpa 2.0、hibernate 3.6.8。我的问题是,在哪些情况下 javassist 用于为 EntityClass 创建“代理”?这个代理的原因是什么?我有以下实体:

当我从 db 加载 MyEntity 时,实体类类似于 MyEntity__$$_javassist。为什么要完成?做什么的?我认为这里可以使用常规类 MyEntity 。

要实现延迟加载,我们可以:

  • 对于@OneToMany - PersistenceBag 可以在这里使用
  • 对于@ManyToOne - 这里应该使用“enchancedClass”,如 Adress_ $$ _javassist

那么增强 MyEntity 的原因是什么?我可以在哪里阅读更多有关它的信息?你能推荐我哪本书/文章/博客?

0 投票
1 回答
255 浏览

javassist - 如何在 Javassist 中获取同步的块对象参数

大家好,我要获取同步块参数,比如

如何使用 Javassist 在字节码级别获取参数“obj”?欢迎任何建议。

0 投票
1 回答
6540 浏览

java - custom class loader for android?

I'm writing an instrumentation library that I'd like to work on both desktop and mobile (Android).

It functions by:

  1. Exposing a main which takes a single parameter, the main of the target class
  2. Installing a class loader which intercepts all classes as they are loaded and instruments them

Like so:

The question is this:

How can I do roughly the same thing for an android app?

One idea is to modify the android manifest to replace the existing activities with "wrapper" activities, that then install class loaders and call into the original underlying activity. Is there a better way?

0 投票
1 回答
1892 浏览

java - 使用 javassist 检测方法

我试图通过在每个检测方法中添加几行代码来将方法的名称写入文件。我正在使用 Javassist。

这是我的代码:

我的问题在其他部分。我无法获得 line 的值,因此打开文件并写入它。

那么,您知道如何检索 line 的值吗?

谢谢

0 投票
1 回答
2903 浏览

java - 使用 javassist 加载另一个类

我有两个项目:一个分析器和一个基本应用程序(使用 JUnit 测试)

分析器使用 Javassist 来检测基本应用程序。

当分析器位于基本应用程序中时,它可以正常工作。当分析器在基本应用程序之外时,我必须将基本应用程序 jar 文件导入 Eclipse 上的构建路径,以便能够检测我的应用程序。

我想像 EMMA 一样在命令行中的基本应用程序上运行我的分析器:

java -jar profiler.jar 运行 application.jar

但我不知道如何告诉我的分析器,好吧,仪器这个罐子。

这是我的探查器主要代码:

我试图这样做:

但是当我运行它时,我得到:

所以我尝试直接运行到我的主类目录:

那么您对如何在外部 jar 项目上运行我的分析器有任何想法吗?非常感谢!

0 投票
1 回答
558 浏览

java - ASM 和 Javassist 之间的*生成代码*的速度是否存在差异?

我正在考虑为 Java 项目生成/修改运行时字节码。

两个重要且仍在维护的 API 是 ASM 和 Javassist。

ASM 生成代码的速度最快,而且可能是最强大的。但它的用户友好性也远不如 Javassist。

就我而言,我想预先执行字节码操作,以便在应用程序设置阶段结束时完成。所以操作/生成的速度并不重要。关键是生成代码的速度,因为它将成为实时桌面游戏的一部分,而不是典型的网络应用程序,网络延迟完全隐藏了反射成本。

所以我的问题是,Javassist 是否在字节码中引入了一些不必要的开销,而在使用 ASM 时不会出现这些开销?或者,换一种说法,与使用 Javassist 相比,在 ASM 级别工作是否会为我提供生成代码的速度提升?

[编辑] 我对这两种工具的最新版本很感兴趣,最感兴趣的是看看是否有人在同一个问题上尝试过它们,并看到生成的类的速度有任何显着差异。

0 投票
0 回答
3349 浏览

java - How to use javassist to replace a class on runtime

don't know anyone use javassist here, I want a sample code. I have a user-input java source string, I can compile it and my question is how to use javassist to replace this new class with the old one in memory, anyone can show the sample code? Thanks.

0 投票
2 回答
2768 浏览

java - AspectJ 可以将字段调用替换为 getter/setter 吗?

例如,我有一个带有公共字段和相应 getter/setter 的类:

现在调用该字段name

是否可以使用aspectj来增强类让字节码为:

我知道javassist可以做到这一点,但是 AspectJ 可以做到吗?

0 投票
4 回答
3250 浏览

java - 编译后从字节码中删除注释

我们正在使用一个包含带有 JAXB 注释的 bean 的库。我们使用这些类的方式不依赖于 JAXB。换句话说,我们不需要 JAXB,也不依赖注解。

但是,由于注释存在,它们最终会被处理注释的其他类引用。这需要我在我们的应用程序中捆绑 JAXB,这是不允许的,因为 JAXB 在javax.*包中(Android 不允许在您的应用程序中包含“核心库”)。

因此,考虑到这一点,我正在寻找一种从编译的字节码中删除注释的方法。我知道有用于操作字节码的实用程序,但这对我来说很新。我该如何开始?