Почему IntelliJ IDEA может разрешать классы, а Groovy / Griffon - нет? - PullRequest
2 голосов
/ 07 декабря 2011

Я работаю над приложением Griffon, использующим IntelliJ, и пытаюсь использовать библиотеки проекта dcm4che.Мне удалось заставить редактор кода IntelliJ перестать жаловаться на пропущенные классы, но когда я запускаю приложение Griffon, компилятор гаснет, жалуясь, что это unable to resolve class DicomInputStream и т. Д.Я не делаю ничего особенного.Все, что я делаю, это пытаюсь включить несколько простых jar-файлов, но по какой-то причине все работает неправильно.

Признаюсь, я не особо разбираюсь в решении проблем с classpath, и яЯ только недавно использовал IntelliJ, а Griffon / Groovy - еще меньше, но я в полном недоумении.

Вот набор операторов импорта, которые не выполняются:

import org.dcm4che2.io.DicomInputStream
import org.dcm4che2.data.DicomObject
import org.dcm4che2.data.DicomElement

И это набор сообщений об ошибках, которые я получаю в консоли IntelliJ при попытке запустить или отладить приложение:

Base Directory: C:\Users\[REDACTED]\MyApp\MyAppClient
Resolving dependencies...
Dependencies resolved in 698ms.
Running script C:\Program Files (x86)\Griffon\Griffon-0.9.4\scripts\RunApp.groovy
Environment set to development
 [griffonc] Compiling 32 source files to C:\Users\[REDACTED]\.griffon\0.9.4\projects\MyApp\classes
 [griffonc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
 [griffonc] C:\Users\[REDACTED]\MyApp\MyAppClient\griffon-app\controllers\myappclient\SelectRootController.groovy: 9: unable to resolve class org.dcm4che2.data.DicomElement
 [griffonc]  @ line 9, column 1.
 [griffonc]    import org.dcm4che2.data.DicomElement
 [griffonc]    ^
 [griffonc] 
 [griffonc] C:\Users\[REDACTED]\MyApp\MyAppClient\griffon-app\controllers\myappclient\SelectRootController.groovy: 7: unable to resolve class org.dcm4che2.io.DicomInputStream
 [griffonc]  @ line 7, column 1.
 [griffonc]    import org.dcm4che2.io.DicomInputStream
 [griffonc]    ^
 [griffonc] 
 [griffonc] C:\Users\[REDACTED]\MyApp\MyAppClient\griffon-app\controllers\myappclient\SelectRootController.groovy: 8: unable to resolve class org.dcm4che2.data.DicomObject
 [griffonc]  @ line 8, column 1.
 [griffonc]    import org.dcm4che2.data.DicomObject
 [griffonc]    ^
 [griffonc] 
 [griffonc] 3 errors
Compilation error: Compilation Failed

Чтобы установить библиотеки dcm4che, я сделал следующее:

  1. Загрузите двоичные файлы библиотеки (-bin zip) и распакуйте архив в MyApp\MyAppClient\lib\dcm4che-2.0.25-bin
  2. В диалоговом окне "Структура проекта" в разделе "Модули-> MyAppClient" на вкладке "Зависимости"Я нажимаю «Добавить» и выбираю папку: MyAppClient\lib\dcm4che-2.0.25-bin\dcm4che-2.0.25\lib

На этом этапе редактор кода перестает жаловаться на невозможность найти и разрешить классы, но когда я запускаю или отлаживаюприложение, яполучить ошибки компиляции.Все работает просто отлично без импорта этих классов (и кода, который их использует).

Что я могу сделать, чтобы решить эту проблему?Какая другая информация будет полезна, чтобы выяснить, что происходит?

1 Ответ

4 голосов
/ 08 декабря 2011

Как предполагает Питер, либо вы настраиваете библиотеку как зависимость, используя DSL зависимостей (если она доступна из репозитория maven или ivy), либо помещаете ее в MyApp / lib (без дополнительных подкаталогов).Это соглашения, установленные Гриффоном.

...