Я пишу специальный загрузчик классов для загрузки некоторых из моих классов (не всех).
Загрузчик классов очень прост:
public Class loadClass(String className, boolean resolve) throws ClassNotFoundException {
Class cls=findLoadedClass(className);
if(cls!=null) {
return cls;
}
// Search first for encrypted classes
cls=decryptClass(className);
if(cls==null) {
// Then try with default system classloader
cls=super.loadClass(className, resolve);
}
return cls;
}
И вот как я его использую:
// In my Launcher class
public static void main(String[] args) {
MyClassLoader loader=new MyClassLoader();
try {
final Class main=loader.loadClass("com.MyAppMain");
Method toInvoke=main.getMethod("main", args.getClass());
toInvoke.invoke(main, new Object[]{args});
}
catch(Exception ex) {
}
}
В моем небольшом тестовом проекте все в порядке, но когда я использую этот загрузчик в моем большом проекте (клиент-серверное приложение, использующее spring + hibernate и IoC), не работает.У меня нет отдельного исключения в моем загрузчике классов, но, например, новый экземпляр Socket вызывает «java.net.ConnectException: Соединение отказано» без реальной причины ...
Другие проблемы - моя основная форма нестановятся видимыми ... и другие странные проблемы, подобные этой.
Итак, вопрос, эти проблемы вызваны тем, что мой загрузчик классов по-разному загружает классы другого типа?
Редактировать 1
В моем проекте используется пружина, поэтому я использую @Autowired или иногда
springApplicationContext.getBean(clazz);
для введения компонента.
Проблема в том, что пружина не может найти мои компоненты, если ониклассы зашифрованы (поэтому они должны быть загружены моим загрузчиком классов).Есть обходной путь для этой ошибки?Спасибо.
Edit 2
Я установил свой загрузчик классов весной ClassPathXmlApplicationContext, и теперь я замечаю, что spring использует мой загрузчик классов для загрузки класса бобов, но, несмотря на это, он вызывает org.springframework.beans.factory.NoSuchBeanDefinitionException, поскольку он не может найти бины ... что я могу сделать?Спасибо