VerifyError: Incompatible argument to function

VerifyError: Incompatible argument to function

我有一个 Gradle 4.4.1 脚本偶尔会失败。这发生在多台机器上,通常在 运行 test 任务之前。

这是相关日志(在 运行 gradlew test --info 期间获取):

Up-to-date check for task ':test' took 4.191 secs. It is not up-to-date because:
  No history is available.
(class: org/gradle/process/internal/worker/child/WorkerProcessClassPathProvider$CacheInitializer, method: remapClass signature: (Ljava/lang/Class;Ljava/util/zip/ZipOutputStream;)V) Incompatible argument to function
java.lang.VerifyError: (class: org/gradle/process/internal/worker/child/WorkerProcessClassPathProvider$CacheInitializer, method: remapClass signature: (Ljava/lang/Class;Ljava/util/zip/ZipOutputStream;)V) Incompatible argument to function
    at org.gradle.process.internal.worker.child.WorkerProcessClassPathProvider.findClassPath(WorkerProcessClassPathProvider.java:79)
    at org.gradle.api.internal.DefaultClassPathRegistry.getClassPath(DefaultClassPathRegistry.java:34)
    at org.gradle.process.internal.worker.child.ApplicationClassesInSystemClassLoaderWorkerImplementationFactory.prepareJavaCommand(ApplicationClassesInSystemClassLoaderWorkerImplementationFactory.java:89)
    at org.gradle.process.internal.worker.DefaultWorkerProcessBuilder.build(DefaultWorkerProcessBuilder.java:194)
    at org.gradle.api.internal.tasks.testing.worker.ForkingTestClassProcessor.forkProcess(ForkingTestClassProcessor.java:84)
    at org.gradle.api.internal.tasks.testing.worker.ForkingTestClassProcessor.processTestClass(ForkingTestClassProcessor.java:69)
    at org.gradle.api.internal.tasks.testing.processors.RestartEveryNTestClassProcessor.processTestClass(RestartEveryNTestClassProcessor.java:47)
    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:498)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.FailureHandlingDispatch.dispatch(FailureHandlingDispatch.java:29)
    at org.gradle.internal.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:133)
    at org.gradle.internal.dispatch.AsyncDispatch.access[=10=]0(AsyncDispatch.java:34)
    at org.gradle.internal.dispatch.AsyncDispatch.run(AsyncDispatch.java:73)
    at org.gradle.internal.operations.BuildOperationIdentifierPreservingRunnable.run(BuildOperationIdentifierPreservingRunnable.java:39)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:745)

版本信息:

./gradlew -version

------------------------------------------------------------
Gradle 4.4.1
------------------------------------------------------------

Build time:   2017-12-20 15:45:23 UTC
Revision:     10ed9dc355dc39f6307cc98fbd8cea314bdd381c

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_111 (Oracle Corporation 25.111-b14)
OS:           Linux 4.13.5-coreos-r2 amd64

这个例子发生在一台新设置的机器上,即 Gradle 刚刚下载了所有需要的东西。如果在 Internet 上未发现有关此错误的任何信息,请提供有关如何修复此错误的任何提示。

升级到 Gradle 4.5 也没有解决问题。

问题似乎出在 Eclipselink 编织上,我已经启用了它 according to an answer here on Whosebug。我的 build.gradle:

里有这个
compileTestJava.doLast {
    ClassLoader antClassLoader = org.apache.tools.ant.Project.class.classLoader
    sourceSets.main.compileClasspath.each{File f -> antClassLoader.addURL(f.toURI().toURL())}

    ant.taskdef(name: "weave",
        classname: "org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask",
        classpath: configurations.compile.asPath
    )

    ant.weave(source: compileJava.destinationDir,
        target: compileJava.destinationDir,
        persistenceinfo: processResources.destinationDir 
    )
}

删除这部分后问题消失了。