8

Я использую Grails 2.3 и модуль миграции базы данных Grails (1.3.6).«Ошибка при загрузке диспетчера плагинов: TomcatGrailsPlugin» на Grails 2.3 Миграция базы данных

Когда я делаю обновление grab dbm, я получаю следующее сообщение об ошибке. Как я могу решить эту ошибку?

Error Error loading plugin manager: TomcatGrailsPlugin (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.) 
java.lang.ClassNotFoundException: TomcatGrailsPlugin 
    at _GrailsBootstrap_groovy$_run_closure2.doCall(_GrailsBootstrap_groovy:40) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90) 
    at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) 
    at _GrailsBootstrap_groovy$_run_closure6.doCall(_GrailsBootstrap_groovy:64) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90) 
    at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantMetaClass.processClosure(GantMetaClass.java:81) 
    at org.codehaus.gant.GantMetaClass.processArgument(GantMetaClass.java:95) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:128) 
    at _DatabaseMigrationCommon_groovy$_run_closure1.doCall(_DatabaseMigrationCommon_groovy:25) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90) 
    at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantMetaClass.processClosure(GantMetaClass.java:81) 
    at org.codehaus.gant.GantMetaClass.processArgument(GantMetaClass.java:95) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:128) 
    at DbmUpdate$_run_closure1.doCall(DbmUpdate:23) 
    at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90) 
    at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185) 
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy) 
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) 
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415) 
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy) 
    at gant.Gant.withBuildListeners(Gant.groovy:427) 
    at gant.Gant.this$2$withBuildListeners(Gant.groovy) 
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source) 
    at gant.Gant.dispatch(Gant.groovy:415) 
    at gant.Gant.this$2$dispatch(Gant.groovy) 
    at gant.Gant.invokeMethod(Gant.groovy) 
    at gant.Gant.executeTargets(Gant.groovy:591) 
    at gant.Gant.executeTargets(Gant.groovy:590) 
| Error Error loading plugin manager: TomcatGrailsPlugin 
+0

В последнее время [дефект] (http://jira.grails.org/browse/GPDATABASEMIGRATION -154) был зарегистрирован для него. – dmahapatro

+0

@dmahapatro У вас есть идея, как решить эту проблему? – confile

+0

@confile Am сталкивается с той же проблемой в grails 2.3 с плагином db-migration 1.3.5 – prayagupd

ответ

5

Попробуйте изменить кот построить тип в buildConfig.groovy для компиляции вместо сборки:

compile ':tomcat:7.0.42'

11

Это супер раздражает ошибки. Мое приложение зависит от запуска скриптов с run-script, и я получаю такое же поведение. Вот что я сделал, как обходной путь:

plugins { 
    ... 
    // grails 2.3.2 and tomcat 7.0.42 cause scripts to not work :(Pass -DnoTomcat=true in the script args to fix this 
    if (System.getProperty("noTomcat") == null) { 
     build ":tomcat:7.0.42" 
    } 
} 

Тогда при выполнении скрипта:

grails -DnoTomcat=true run-script scripts/MyScript.groovy 

раздражающих наверняка, но, по крайней мере, вы можете использовать все другие новейшие функции в ожидании исправления.

+0

Я никогда не мог запустить run-script для работы с этим методом. Если бы я сделал компиляцию grails, то Grails MyScript работал с использованием этого метода. Если я использовал run-script, он бомбил с помощью MissingPropertyException includeTargets. – chubbsondubs

+0

Я тестировал с 2.3.7, и эта работа работает. – Guus

+0

Привет, я нахожу ту же проблему. Вы знаете, если кто-то уже искупил ошибку? Cheers –

0

Я была такая же проблема при обновлении до 2.3.2

Я попытался выше с флагом -DnoTomcat

Это еще не работает. Затем я понял, что некоторые плагины inplace ссылаются на tomcat. По-видимому, это похоже на наследие, потому что недавно созданные плагины с grails 2.3.2 не имеют ссылок на tomcat. Поэтому я просто удалил все ссылки из плагинов и сохранил флаг в моем основном приложении.

1

Я на Grails 2.3.4, но вот как я установил эту проблему:

  1. Модернизированный миграции базы данных 1.3.8
  2. Снят мою папку scriptCache
  3. Выполняемые Refresh-зависимостей

Повторно перенесена сценарий миграции базы данных, и проблема была решена.

2

Итак, если вы находите это, потому что ваши скрипты разбиты на 2.3.x, вот что я обнаружил о проблеме в целом. Я все еще не могу использовать run-script, потому что он всегда терпит неудачу с недостающей проблемой TomcatPlugin (я подозреваю, что это означает, что run-script всегда пытается безостановочно загружать grails). Тем не менее, я могу заставить скрипты компилироваться и запускаться как задачи. Мои сценарии всегда будут терпеть неудачу, потому что я бутстрапированная Grails, используя следующий метод:

includeTargets << grailsScript("_GrailsInit") 
includeTargets << grailsScript("_GrailsBootstrap") 
includeTargets << grailsScript("_GrailsClasspath") 

target(main: "Generate a secret key to be used with HMAC and AES algorithms") { 
    depends(bootstrap) // this is problem 
} 

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

Так как я получил так повезло, и мои скрипты действительно не должны полностью бутстраповские Grails я мог бы сделать следующее, и он работал, а также:

includeTargets << grailsScript("_GrailsInit") 
includeTargets << grailsScript("_GrailsBootstrap") 
includeTargets << grailsScript("_GrailsClasspath") 

target(main: "Generate a secret key to be used with HMAC and AES algorithms") { 
    depends(parseArguments) // this is not problem 
} 

И альт он начал работать снова. Хорошо работает-иш.Вот то, что работает против не работает:

$ grails GenerateSecretKey    // yay works 
$ grails run-script GenerateSecretKey // doesn't work 

Вот некоторые JIRA вопросы об этой проблеме (ы), так что вы будете знать, когда все это не так ;-)

0

Просто небольшое уточнение, которое было упомянуто aboveby chubbsondubs, но я пропустил на первом прочтении ...

Обычно простой ответ на это вместо того, чтобы делать:

grails run-script scripts/DoSomething 

просто сделать это:

grails do-something 
+0

Я считаю, что это было помечено как дубликат существующего ответа уже по этому вопросу ... не уверен, как мы должны справляться с этим, но я рекомендовал удаление. – ArtOfWarfare

+0

Извините, что уточнил. В моем случае мне не нужно было ничего делать, кроме вышеуказанного, чтобы устранить проблему. – DGrailsDev

+0

Лучше (более полный) ответ на http://stackoverflow.com/questions/23745917/how-can-services-be-be-accessed-within-grails-scripts/27045533#27045533 – DGrailsDev

Смежные вопросы