Загрузчик классов классов для классов в баночках, содержащих банки
До сих пор примеры, которые я видел для пользовательских ClassLoaders, включают в себя подклассу URLClassLoader и использование этого конкретного экземпляра для загрузки классов в ресурсы.
Я тщетно пытался найти альтернативные методы для замены SystemClassLoader, поэтому с моим ClassLoader можно ознакомиться для классов, не расположенных в пути к классам.
Я попробовал Thread.currentThread().setContextClassLoader
, но он не работает.
Возможно ли это?
Ответы
Ответ 1
Хотя это старый вопрос, действительно есть способ заменить систему ClassLoader.
Однако вы могли бы получить больше, чем вы рассчитывали, с отражением.
Field scl = ClassLoader.class.getDeclaredField("scl"); // Get system class loader
scl.setAccessible(true); // Set accessible
scl.set(null, new YourClassLoader()); // Update it to your class loader
Это должно работать на JVM Oracle.
Ответ 2
Запустите JVM с java.system.class.loader
:
java -Djava.system.class.loader=myClassLoader myApplication