У меня есть каталог под названием «TestDir», который содержит несколько внешних файлов .class, которые я хотел бы загрузить и изменить во время выполнения с помощью JAssist.
Я понимаю, что именно так вы должны загружать внешние классы с помощью javassist:
ClassPool pool = ClassPool.getDefault();
pool.insertClassPath("C:\\Users\\MainPC\\Documents\\TestDir");
CtClass clazz = pool.getCtClass("TestClass");
Это работает без каких-либо исключений, однако в тот момент попробуйте вызвать любые методы 'clazz', например:
System.out.println(clazz.getGenericSignature());
Я получаю следующее исключение:
Exception in thread "main" java.lang.RuntimeException: cannot find TestClass: TestDir.TestClass found in TestClass.class
at javassist.CtClassType.getClassFile3(CtClassType.java:211)
at javassist.CtClassType.getClassFile2(CtClassType.java:178)
at javassist.CtClassType.getGenericSignature(CtClassType.java:379)
at ReflectionTests.main(ReflectionTests.java:33)
Может кто-нибудь объяснить мне, почему это происходит?