Создание экземпляра tomcat WEB-INF\class\myclass из библиотеки tomcat с использованием загрузчика классов

Я пытаюсь загрузить класс, присутствующий в военном файле в tomcat, из класса в банке в библиотеке tomcat. Я делаю это, используя Class.forname("myclass"), но приложение генерирует исключение class not found. Я думаю, это потому, что веб-приложение будет иметь свой собственный загрузчик классов. может кто подскажет как это исправить


person Subhomoy Sikdar    schedule 25.01.2016    source источник


Ответы (2)


Это по дизайну - вы не можете этого сделать. С иерархическими загрузчиками классов, которые использует tomcat, у вас нет возможности загрузить класс, содержащий веб-приложение, из класса, загруженного из глобального пути к классам, если вы не создадите свой собственный механизм загрузки классов, что я бы не рекомендовал.

Я бы предпочел знать, какую проблему вы пытаетесь решить с помощью этой попытки решения. Я не могу придумать ни одной основной проблемы, для которой это было бы правильным решением.

person Olaf Kock    schedule 25.01.2016
comment
Решение не верное, но сценарий такой. Общие классы, которые используются всеми военными файлами, помещаются в библиотеку tomcat, и мне нужно получить некоторые данные внутри класса в библиотеке tomcat, что так же, как это делается в классе в файле войны. Я не хочу копировать и вставлять тот же код, но создавать экземпляр класса внутри файла войны и получать данные - person Subhomoy Sikdar; 25.01.2016

Вы должны использовать Thread#getContextClassLoader() для создания экземпляров классов, которые могут быть частью вашего дистрибутива WAR. Но убедитесь, что Tomcat инициализирует его с помощью загрузчика классов веб-приложения.

person dzidzitop    schedule 25.01.2016
comment
Я попытался использовать загрузчик webappclassloader для org.apache.catalina, но получил нулевой указатель в методе .start() - person Subhomoy Sikdar; 25.01.2016
comment
Не пытайтесь инициализировать загрузчики классов самостоятельно. Используйте тот, который уже инициализирован Tomcat. - person dzidzitop; 25.01.2016