我正在使用javassist修改现有jar文件的类,并在修改后将这些类写回。这一切工作正常,但现在我想从当前运行到类池的程序中加载一个类文件:
ClassPool classPool = new ClassPool();
ClassPath classPath = classPool.appendClassPath(jarFilePath);
// here I want to insert a class from my current program into the classPool (IOException here)
classPool.makeClass(MyClass.class.getProtectionDomain().getCodeSource().getLocation().openConnection().getInputStream());
// ...
问题是,调用makeclass方法时出现异常:
java.io.ioexception:错误的幻数:6
在javassist.bytecode.classfile.read(classfile。java:790)
在javassist.bytecode.classfile。java:185)
在javassist.ctclasstype.(ctclasstype。java:98)
在javassist.classpool.makeclass(classpool。java:707)
在javassist.classpool.makeclass(classpool。java:685)
...
我知道这里的幻数是指 CAFEBABE
标记类文件:https://www.javainterviewpoint.com/magic-number-in-java/
如何解决这个问题,以便我可以从类池中的程序使用这个类?
暂无答案!
目前还没有任何答案,快来回答吧!