java - 如何使一个类将自身复制到另一个可以用Java执行的具有不同名称的类中?

标签 java

我想做的是复制给定文件名的已编译类[让我们称之为ClassA.class](在代码中作为字符串) ,到一个新文件(也定义为 ClassA 中的字符串)[让我们称之为 ClassB.class],并能够执行新复制的类(使用新文件名)使用“javac ClassB”。

最好、最简洁的方法是什么?

编辑:有效的解决方案......

将文件从 ClassA 十六进制编辑到 ClassB 成功了! 所以我想任何会改变二进制代码的东西都会起作用,具有恒定(相同)长度的文件名。

最佳答案

您可以使用字节码操作库(Javassist、Asm、BCEL)复制类。

使用 Javassist 将会是这样的(没有尝试过):

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("ClassA");
cc.setName("ClassB");
cc.writeFile("ClassB.class");

关于java - 如何使一个类将自身复制到另一个可以用Java执行的具有不同名称的类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814671/

相关文章:

java - BufferedWriter 类型中的方法 write(int) 不适用于参数 (Long)

java - 仅在需要时才在 Reactor 的 Flux 中请求下一个

java - 打印带有有序属性的 JSON

java - 如何将 map 转换为 url 查询字符串?

java - Firebase Firestore : Returning NullPointer Exception when accessing data

java - Spring 3 安全性不起作用

Java ConcurrentHashMap 原子获取和放置

Java swing 三个相对组合框

java - windows系统如何启动高优先级的Java进程

java - 使用什么方法使 Servlet 线程安全?