WedX - журнал о программировании и компьютерных науках

Каталог Grails lib не работает

Я использую Grails 2.2.3. Я поместил файл jar в каталог lib, IDEA сразу разрешила зависимость. Но когда я запускаю приложение, я получаю NullPointerException в классе из этой библиотеки. Если я попробую это во второй раз или больше, я получу java.lang.NoClassDefFoundError. Я нашел много советов, как решить эту проблему, но ни один из них не был полезен в моем случае.

Библиотека (mylib-1.jar), скомпилированная в maven и добавленная в каталог lib. В BuildConfig.groovy зависимость упоминается как:

dependencies {
    compile 'com.mylib:mylib:1'
}

Я пытался

grails clean
grails compile --refresh-dependencies
grails refresh-dependencies

но ничего не помогает. В результирующем файле войны я вижу эту библиотеку в WEB-INF/lib, но даже если развернуть эту войну, я получаю ту же ошибку.

Как это можно решить?

28.07.2013

  • Итак, у вас есть файл .jar в вашем каталоге /lib И compile 'com.mylib:mylib:1' в вашем BuildConfig.groovy? 28.07.2013
  • Верно. Но я попытался удалить и эту строку. 28.07.2013

Ответы:


1

Вы путаете NoClassDefFoundError с ClassNotFoundException. ClassNotFoundException происходит, когда нужного вам класса нет, но вы получаете NoClassDefFoundError, когда класс есть, но класса, от которого он зависит, нет. Итак, вам не хватает другого jar-файла, от которого зависит этот jar-файл.

Это одна из многих причин, почему лучше использовать управление зависимостями вместо того, чтобы вручную копировать файлы jar в каталог lib. Если вы используете репозиторий Maven, в котором jar-файлы имеют правильные файлы POM, их зависимости указаны, и распознаватель может загрузить для вас все дерево зависимостей, вместо того, чтобы вам приходилось искать все jar-файлы самостоятельно.

28.07.2013
  • Спасибо, теперь есть куда копать. Я не понимаю, почему это происходит, ведь все необходимые зависимости подключаются с помощью maven-артефактов, возможно, я просто что-то упустил. 28.07.2013
  • @Mitya XMitya, попробуйте использовать JarAnalyzer, чтобы узнать, что вам не хватает kirkk.com/main/Main /JarAnalyzer 28.07.2013
  • Новые материалы

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]