2015-12-05 3 views
0

Когда я пытаюсь запустить Gretty с помощью gradle appRun и Gradle 2.9 Я получаю следующее сообщение об ошибке.NoClassDefFoundError при запуске Gretty in Gradle build

Exception in thread "main" java.lang.NoClassDefFoundError: groovy/json/JsonSlurper 
    at org.akhikhl.gretty.Runner.run(Runner.groovy:114) 
    at org.akhikhl.gretty.Runner.this$2$run(Runner.groovy) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) 
    at org.akhikhl.gretty.Runner.main(Runner.groovy:46) 
Caused by: java.lang.ClassNotFoundException: groovy.json.JsonSlurper 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 12 more 
Exception in thread "Thread-3" org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 
    at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367) 
    at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31) 
    at org.gradle.api.internal.file.DefaultFileOperations.javaexec(DefaultFileOperations.java:159) 
    at org.gradle.api.internal.project.AbstractProject.javaexec(AbstractProject.java:792) 
    at org.gradle.api.internal.project.AbstractProject.javaexec(AbstractProject.java:788) 
    at org.gradle.api.Project$javaexec$10.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 
    at org.akhikhl.gretty.DefaultLauncher.javaExec(DefaultLauncher.groovy:67) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
    at org.akhikhl.gretty.LauncherBase$_launchThread_closure4.doCall(LauncherBase.groovy:240) 
    at org.akhikhl.gretty.LauncherBase$_launchThread_closure4.doCall(LauncherBase.groovy) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) 
    at groovy.lang.Closure.call(Closure.java:426) 
    at groovy.lang.Closure.call(Closure.java:420) 
    at groovy.lang.Closure.run(Closure.java:507) 
    at java.lang.Thread.run(Thread.java:745) 

Мое приложение не требует groovy-json на всех, и я подозреваю, что требуется плагин Gretty Gradle, но я не могу найти проблему. Вот что я пробовал еще:

Прикладной gretty.plugin из локального местоположения и добавьте groovy-json в качестве зависимости от класса buildscript.

buildscript { 
    repositories { 
    jcenter() 
    } 

    dependencies { 
    classpath 'org.akhikhl.gretty:gretty:1.2.4' 
    classpath "org.codehaus.groovy:groovy-json:${groovyVersion}" 
    } 
} 

repositories { 
    jcenter() 
} 

dependencies { 
    // does not affect the situation either 
    runtime "org.codehaus.groovy:groovy-json:${groovyVersion}" 
} 

if (!project.plugins.findPlugin(org.akhikhl.gretty.GrettyPlugin)) 
    project.apply(plugin: org.akhikhl.gretty.GrettyPlugin) 

Не меняется, пользуюсь ли я Jetty 9 или Tomcat 8. Это всегда приводит к той же ошибке.

Я нашел причину такого поведения.

В моем сборке я удостоверяюсь, что groovy-all никогда не используется и заменяется модулем groovy (см. Ниже).

configurations.all { 
     resolutionStrategy { 

      eachDependency { DependencyResolveDetails details -> 
       //changing 'groovy-all' into 'groovy': 
       if (details.requested.name == 'groovy-all') { 
        details.useTarget group: details.requested.group, name: 'groovy', version: groovyVersion 
       } 
     } 
} 

Именно по этой причине происходит ошибка. Но может ли кто-нибудь сказать мне, почему я не исправляюсь, когда добавляю groovy-json как runtime зависимости?

+0

Вы пытались добавить 'groovy-json' в качестве зависимости от времени выполнения? – tomasulo

+0

Да, я это сделал. Это не изменило ситуацию. Я немного потерял, так как не понимаю, почему «groovy-json» отсутствует. Кстати. Я использую Gradle 2.9 – saw303

ответ

0

Я столкнулся с той же проблемой. Не решить полностью пока, но это, кажется, помогает:

Что сказать по существу, является то, что для Deps grettyplugin себя должны быть добавлены с gretty ключевых слов (не компиляции или времени выполнения)

compile group: 'org.apache.poi', name: 'ooxml-schemas', version: '1.3' 

runtime group: 'org.postgresql', name: 'postgresql', version: '9.4.1209.jre7' 

gretty 'com.atomikos:transactions-jta:4.0.4' 

Надеюсь, это поможет кому-то еще (мне понадобилось некоторое время, чтобы понять это).