Должен ли ClassLoader разрешать и загружать класс из другого пакета? - PullRequest
2 голосов
/ 04 января 2012

Используя пример, приведенный в документации для ClassLoader , я могу загрузить класс, который находится в том же пакете, что и ${it}:

ClassLoader cl = it.class.getClassLoader()
def builder = cl.loadClass("hudson.plugins.emailext.plugins.ContentBuilder", true).newInstance()

Но когда я пытаюсьзагрузить из другого пакета, например:

def logParserParser = cl.loadClass("hudson.plugins.logparser.LogParserParser", true).newInstance()

Я получаю сообщение об ошибке:

Exception: javax.script.ScriptException: java.lang.ClassNotFoundException: hudson.plugins.logparser.LogParserParser.

Как загрузить класс из другого пакета?

ОБНОВЛЕНИЕ:

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

Ответы [ 2 ]

0 голосов
/ 04 января 2012

То, что вы пытаетесь, должно работать, я думаю.

Может ли быть проблемой, что LogParserParser не имеет общедоступного конструктора без аргументов?

Кроме того, вы можете попробовать запустить тестовую JVM с -XX: + TraceClassLoading, чтобы получить лучшее представление о том, что пытается сделать загрузчик классов.

0 голосов
/ 04 января 2012

Это зависит от того, как был настроен ClassLoader. Ошибки такого типа обычно возникают, когда требуемый класс использует класс, который недоступен. то есть сам класс доступен. Что такое точное сообщение об ошибке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...