Недавно у меня была похожая проблема, когда я подозревал, что классы загружались (предположительно, через -classpath или что-то подобное) моими пользователями, которые конфликтовали с классами, которые я загружал позже в свой собственный загрузчик классов.
Попробовав несколько вещей, упомянутых здесь, мне показалось, что следующее помогло. Я не уверен, работает ли он для всех обстоятельств, он может работать только для классов Java, загруженных из файлов JAR.
InputStream is = getResourceAsStream(name);
Где name
- это путь к файлу класса, например com/blah/blah/blah/foo.class
.
getResourceAsStream
вернул null
, когда класс не был загружен в мой загрузчик классов или системный загрузчик классов, и вернул ненулевое значение, когда класс уже был загружен.