The joys of mixing test classes into the system class loader …. We're picking up the BootstrapClassLoaderWorker from the version of Gradle being used to run the build. It works on CI build because we're using forking mode there. There're 2 classes that we need to start the process, and given that these are visible to the classes under test (i.e. gradle classes in our case), they can never be changed.
They can, however, be given new names. So, we just need to rename BootstrapClassLoaderWorker to fix the problem. On 30/03/2012, at 7:48 AM, Luke Daley wrote: > > On 29/03/2012, at 3:08 PM, Daz DeBoer wrote: > >> Can you provide some more details? > > > And take the fun out of it for you? Sure… > > ./gradlew integTest:integTest > > Gives lots of failures like: > > org.gradle.api.internal.LocationAwareException: Execution failed for task > ':test'. > at > org.gradle.initialization.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:85) > at > org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112) > at > org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:78) > at > org.gradle.integtests.fixtures.InProcessGradleExecuter.doRun(InProcessGradleExecuter.java:136) > at > org.gradle.integtests.fixtures.InProcessGradleExecuter.doRun(InProcessGradleExecuter.java:68) > at > org.gradle.integtests.fixtures.AbstractGradleExecuter.run(AbstractGradleExecuter.java:309) > at > org.gradle.integtests.fixtures.AbstractDelegatingGradleExecuter.doRun(AbstractDelegatingGradleExecuter.java:23) > at > org.gradle.integtests.fixtures.AbstractGradleExecuter.run(AbstractGradleExecuter.java:309) > at > org.gradle.integtests.fixtures.AbstractIntegrationSpec.succeeds(AbstractIntegrationSpec.groovy:83) > at > org.spockframework.util.GroovyRuntimeUtil.invokeMethod(GroovyRuntimeUtil.java:100) > at org.gradle.integtests.CustomPluginIntegrationTest.can use java > plugin from custom plugin and its integration > tests(CustomPluginIntegrationTest.groovy:205) > Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for > task ':test'. > at > org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:68) > at > org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) > at > org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:34) > at > org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter$1.run(CacheLockHandlingTaskExecuter.java:34) > at > org.gradle.cache.internal.DefaultCacheAccess$2.create(DefaultCacheAccess.java:200) > at > org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:172) > at > org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:198) > at > org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:111) > at > org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:83) > at > org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter.execute(CacheLockHandlingTaskExecuter.java:32) > at > org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:55) > at > org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57) > at > org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41) > at > org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51) > at > org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52) > at > org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42) > at > org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:247) > at > org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:192) > at > org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:177) > at > org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:83) > at > org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:36) > at > org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) > at > org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) > at > org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) > at > org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31) > at > org.gradle.cache.internal.DefaultCacheAccess$1.create(DefaultCacheAccess.java:111) > at > org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:126) > at > org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:109) > at > org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:103) > at > org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79) > at > org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java:29) > at > org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) > at > org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) > at > org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) > at > org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) > at > org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) > at > org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54) > at > org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:155) > at > org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:110) > ... 9 more > Caused by: java.lang.NoSuchMethodError: > org.gradle.process.internal.launcher.BootstrapClassLoaderWorker.<init>(Ljava/util/Collection;[B)V > at > org.gradle.process.internal.child.ApplicationClassesInSystemClassLoaderWorkerFactory.create(ApplicationClassesInSystemClassLoaderWorkerFactory.java:99) > at > org.gradle.process.internal.DefaultWorkerProcessFactory$DefaultWorkerProcessBuilder.build(DefaultWorkerProcessFactory.java:92) > at > org.gradle.api.internal.tasks.testing.worker.ForkingTestClassProcessor.processTestClass(ForkingTestClassProcessor.java:62) > at > org.gradle.api.internal.tasks.testing.processors.RestartEveryNTestClassProcessor.processTestClass(RestartEveryNTestClassProcessor.java:45) > at > org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) > at > org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) > at > org.gradle.messaging.dispatch.FailureHandlingDispatch.dispatch(FailureHandlingDispatch.java:29) > at > org.gradle.messaging.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:132) > at > org.gradle.messaging.dispatch.AsyncDispatch.access$000(AsyncDispatch.java:33) > at > org.gradle.messaging.dispatch.AsyncDispatch$1.run(AsyncDispatch.java:72) > at > org.gradle.messaging.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:680) > > -- > Luke Daley > Principal Engineer, Gradleware > http://gradleware.com > -- Adam Murdoch Gradle Co-founder http://www.gradle.org VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting http://www.gradleware.com
