首页 > 解决方案 > java.lang.NoSuchFieldError: gradle artifactoryPublish 任务期间的 INSTANCE 错误

问题描述

我们正在尝试将配置了 gradle 4.0 的项目迁移到 gradle 5.6(最新)。看起来 httpclient (apache) 组件存在依赖性问题,在发布 war 包期间会生成此异常。

这是一个 gradle 项目,根(容器)项目包含一个用于打包的 war 插件,用于发布的 jfrog artifactory 4.9.8,所有子项目都是 java 项目,并提供了它们的依赖项列表(包括 httpclient 4.5.9 和 httpcore 4.4.11) .

-- root
plugins {
    id 'war'
    id 'maven-publish'
    id 'org.sonarqube' version '2.7'
    id 'net.researchgate.release' version '2.6.0'
    id 'com.github.spotbugs' version '2.0.0' apply false
    id 'com.jfrog.artifactory' version '4.9.8'
}

-- subprojects
dependencies {
      ..
      compile 'org.apache.httpcomponents:httpclient:4.5.9'
      ..
      configurations.all {
            force 'org.apache.httpcomponents:httpcore:4.4.11'
            force 'org.apache.httpcomponents:httpclient:4.5.9'
      }
}

./gradlew artifactoryPublish

Caused by: java.lang.NoSuchFieldError: INSTANCE
        at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.getDefaultRegistry(PoolingHttpClientConnectionManager.java:109)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:116)
        at org.jfrog.build.client.PreemptiveHttpClient.<init>(PreemptiveHttpClient.java:57)
        at org.jfrog.build.client.ArtifactoryHttpClient.getHttpClient(ArtifactoryHttpClient.java:145)
        at org.jfrog.build.client.ArtifactoryHttpClient.getHttpClient(ArtifactoryHttpClient.java:140)
        at org.jfrog.build.client.ArtifactoryHttpClient.executeGetRequest(ArtifactoryHttpClient.java:184)
        at org.jfrog.build.client.ArtifactoryHttpClient.getVersion(ArtifactoryHttpClient.java:154)
        at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBaseClient.getArtifactoryVersion(ArtifactoryBaseClient.java:109)
        at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.tryChecksumDeploy(ArtifactoryBuildInfoClient.java:705)
        at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.uploadFile(ArtifactoryBuildInfoClient.java:664)
        at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.doDeployArtifact(ArtifactoryBuildInfoClient.java:367)
        at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.deployArtifact(ArtifactoryBuildInfoClient.java:355)
        at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.deployArtifact(ArtifactoryBuildInfoClient.java:340)
        at org.jfrog.gradle.plugin.artifactory.task.DeployTask.deployArtifacts(DeployTask.java:262)
        at org.jfrog.gradle.plugin.artifactory.task.DeployTask.prepareAndDeploy(DeployTask.java:113)
        at org.jfrog.gradle.plugin.artifactory.task.DeployTask.collectProjectBuildInfo(DeployTask.java:50)
        at org.jfrog.gradle.plugin.artifactory.task.DeployTask.taskAction(DeployTask.java:44)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)

标签: gradlepluginsdependencieswarartifactory

解决方案


推荐阅读