ClassLoader не содержит класса
У меня есть агент, которому необходимо внести изменения в класс приложения, для этого я использую Attach API + Javassit. Сначала я попробовал использовать:
Class.forName("net.minecraft.client.multiplayer.PlayerControllerMP");
однако я получил исключение, в котором говорилось, что класс не найден.
for (Class<?> c : instrumentation.getAllLoadedClasses()) {
if (c.getName().equals("net.minecraft.client.multiplayer.PlayerControllerMP"))
playerControllerClazz = c;
}
Чтобы добавить класс в путь Javassist, я использовал этот код:
ClassPool.getDefault().appendClassPath(new LoaderClassPath(playerControllerClazz.getClassLoader()));
Я получил исключение NotFoundException от Javassist. У меня была идея перебрать все классы, загруженные с помощью ClassLoader, полученного через
playerControllerClazz.getClassLoader();
Используя этот код:
for (Class<?> c : instrumentation.getInitiatedClasses(playerControllerClazz.getClassLoader())) {
System.out.println("Class: " + c.getName());
}
Я проверил все строки в своем выводе и не нашел класс net.minecraft.client.multiplayer.PlayerControllerMP.
Где я ошибаюсь или что происходит?