小编Jen*_*ens的帖子

如何在asm代码中正确使用Instrumentation.retransformClasses()?

我正在使用asm库来执行一些Java字节码修改 - 专门用于修改我的类以实现新的接口和相关方法.我目前的方法是通过javaagent使用核心asm API.我想保留这种动态方法,而不是静态修改.class文件.

在更高的层次上,我的问题是,如果我选择修改从B扩展的A类,我还需要修改B.(鉴于我对如何在JVM中加载类的理解,我相信B类将永远是在A级之前交给变压器.(如果我错了,请纠正我.)鉴于这个假设,我认为我需要返回并重新转换 B.我的方法在这段代码中被捕获:

public byte[] transform(ClassLoader l, String name, Class<?> clazz, ProtectionDomain d, byte[] b) {
      throws IllegalClassFormatException {
    // **1**
    System.out.println("--->>> " + name);

    if (interestingClass(name)) {
        try {
            ClassReader cr = new ClassReader(b);
            ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
            PyClassVisitorAdapter pv = new PyClassVisitorAdapter(cw, name);
            cr.accept(pv, 0);

            // **2** Retrieve the superclass and try to transform that
            if (! "Ljava/lang/Object;".equals(pv.getSuperName())) {
                String cName = classJvmToCanonical(pv.getSuperName());
                Class[] classes = inst.getAllLoadedClasses();
                for (Class c …
Run Code Online (Sandbox Code Playgroud)

java bytecode java-bytecode-asm

8
推荐指数
1
解决办法
1506
查看次数

如何以编程方式设置Mac OS X 10.6终端选项卡标题?

我正在努力学习Applescript,最终,以编程方式将终端中的选项卡标题设置为我目前正在使用的任何上下文.应该是一个简单的任务,我认为它几乎是正确的我认为.这是我到目前为止的实验代码......

tell application "Terminal"
    activate
    set frontIndex to index of the first window whose frontmost is true
    tell window frontIndex
        set title displays custom title of selected tab to true
        set custom title of selected tab to "Bazzy"
    end tell
end tell
Run Code Online (Sandbox Code Playgroud)

问题是当我设置标签的标题时,所有其他标签的标题也会被设置.但是,如果我右键单击并检查选项卡,然后在该选项卡上手动设置标题,则在运行我的代码时,其标题不会受到影响,并且我手动键入的标题仍然存在.就好像title displays custom title没有阅读该属性,或者这个属性可能不会像我想的那样做.

如何将一个选项卡的标题设置为自定义值?

macos terminal applescript osx-snow-leopard

5
推荐指数
2
解决办法
6359
查看次数