2015-03-30 4 views
2

Когда я пытаюсь запустить свежезаваренный созданный проект с помощью Grails 2.5.0:NoClassDefFoundError на Грааль запустить приложение (Grails 2.5.0)

$ grails create-app test250 
$ cd test250 
$ grails run-app 

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

| Running Grails application 
| Error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
| Error  at org.grails.plugins.tomcat.fork.ForkedTomcatServer.<clinit>(ForkedTomcatServer.groovy:44) 
| Error Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
| Error  at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
| Error  at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
| Error  at java.security.AccessController.doPrivileged(Native Method) 
| Error  at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
| Error  at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
| Error  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
| Error  at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
| Error  ... 1 more 
Exception in thread "main" 
| Error Forked Grails VM exited with error 

Моя машина работает с OSX 10.10.2, и у меня есть несколько проектов, работающих на Grails 2.2.5 без проблем.

+0

Я не могу воспроизвести проблему. Я бы удостоверился, что GRAILS_HOME указывает на правильную неповрежденную установку и что $ GRAILS_HOME/bin находится в PATH перед любым другим местом, в котором может быть исполняемый файл grails. Если вы не можете его устранить, напишите о проблеме по адресу http://jira.codehaus.org/browse/GRAILS. Благодарю. –

+1

Я использую gvm для управления Grails, и я не вижу проблемы там. Я только что воспользовался командой https://gist.github.com/jeffbrown/92e141ac5f58de7a0271, чтобы проверить дистрибутив, и я тоже не вижу проблемы. –

+0

GRAILS_HOME указывает на новую установку и является единственной установкой в ​​переменной PATH. Благодарю. – Eduardo

ответ

0

Проблема была решена с помощью GVM (как указано Джеффом), чтобы управлять различными Grails версии, установленные на моей машине.

1

Похоже, проблема в том, что Обще-каротаж косвенно используется плагин Tomcat (ForkedTomcatServer расширяет ForkedGrailsProcess класс Grails, который ссылается org.apache.commons.logging.Log), но это не экспортируется, и это не зависимость Grails.

Это косвенная зависимость плагина с доступом к ресурсам, поэтому он должен сделать банку доступной и работать с ошибкой для большинства пользователей. Вы удалили конвейер ресурсов как зависимый плагин в BuildConfig.groovy?

Вы должны быть в состоянии получить все работает явно добавляя зависимость для Викисклада входа в BuildConfig.groovy:

dependencies { 
    runtime 'commons-logging:commons-logging:1.2' 
    ... 
} 
+0

«Вы удалили конвейер ресурсов как зависимый плагин в BuildConfig.groovy?» - В его описании говорится, что он запустил приложение-создатель, а затем запустил run-app. Если бы было редактирование BuildConfig.groovy между этими шагами, есть несколько способов, чтобы проблема могла быть введена. Интересно, случилось ли это. –

+0

Как сказал Джефф, я не касался приложения после создания приложения. Ошибка сохранялась даже после явного добавления зависимости, как предложил Берт. – Eduardo

+0

Единственное, что я сделал, это установить JAVA_HOME (и PATH) на установку версии 1.7.0_21, чтобы удалить это предупреждение: objc [37872]: класс JavaLaunchHelper реализован как в/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Содержание/Главная/bin/java и /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/lib/libinstr ument.dylib. Один из двух будет использован. Какой из них не определен. – Eduardo

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