Если это веб-приложение, вам следует использовать загрузчик классов веб-приложения при создании динамического прокси. Так, например, вместо:
Proxy.newProxyInstance(
ClassLoader.getSystemClassLoader(),
new Class < ? >[] {MyInterface.class},
new InvocationHandler() {
// (...)
});
попробовать:
Proxy.newProxyInstance(
this.getClass().getClassLoader(), // here is the trick
new Class < ? >[] {MyInterface.class},
new InvocationHandler() {
// (...)
});
Например, иерархия загрузчиков классов tomcat (аналогичные имеют другие веб-контейнеры):
Bootstrap
|
System
|
Common
/ \
Webapp1 Webapp2 ...
И это загрузчик классов веб-приложения, который содержит классы и ресурсы в каталоге / WEB-INF / classes вашего веб-приложения, а также классы и ресурсы в файлах JAR в каталоге / WEB-INF / lib вашего веб-приложения.