2015-06-03 6 views
0

Я написал простой java-агент для работы с некоторыми приложениями в Java-приложениях с использованием библиотеки javassist.Java-агенты бросают ClassNotFoundException при использовании javassist

Проблема заключается в том, что я прикрепляю свой агент к процессу jp2launcher. Я получаю ClassNotFoundException, потому что он не может найти класс javassist.CtBehavior.

Итак, я попробовал запустить простое локальное приложение Java, чтобы проверить мой агент, чтобы узнать, работает ли он.

Я попробовал запустить еще один тест, где я только печатаю «привет» на консоль java и присоединяю свой агент к веб-приложению, и он работал, и только он говорит мне, что мой агент работает.

Есть ли у вас какие-либо идеи, почему он не может найти javassist при подключении к веб-приложению? Я уже установил classpath, чтобы указать javassist.jar на моем диске.

Благодаря

ответ

0

Вы, скорее всего, используя по умолчанию ClassPool. Javassist представляет собой разгруженные классы путем разбора файла класса для каждого такого класса из загрузчика классов. по умолчанию класс пула, однако ссылается на загрузчик системного класса . Однако веб-приложение выполняется другим загрузчиком классов приложений. Поэтому вам нужно добавить этот загрузчик классов к ClassPool, чтобы использовать его так, как вы его наблюдали в своем модульном тесте.