java—如何从文件系统加载类文件并在类池中使用它?

omqzjyyz  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(255)

我正在使用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/
如何解决这个问题,以便我可以从类池中的程序使用这个类?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题