所以,它真的耗费了我很多时间。我正在尝试构建一个使用这些jar的项目(使用gradle) 'org.codehaus.groovy.modules.http建设者:HTTP建设者:0.7.2' 'org.apache.httpcomponents',名称:'httpclient',版本:'4.5.1'
我build.gradle
(登台插件)的内容:
apply plugin:'groovy'
apply plugin:'idea'
apply plugin:'eclipse'
sourceCompatibility = targetCompatibility = "1.7"
def nexusUrl = "http://nexus/nexus/content/groups/artifacts"
project.ext.set("nexusUsername", nexusUsername)
dependencies{
compile gradleApi()
compile localGroovy()
testCompile 'junit:junit:4.11'
testCompile 'org.spockframework:spock-core:0.7-groovy-1.8'
compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.2@jar'
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0.1'
//compile 'maven-plugins:maven-cobertura-plugin:1.2@plugin'
}
jar {
baseName=projectName
}
http-builder jar使用了不可用的cobertura-plugin 1.3.plugin。为了避免传递依赖,我使用了http-builder:0.7.2@jar
。
httpclient jar有DefaultHttpClient
类。
然后,我在另一个项目中使用这个项目。现在,我在构建这个项目时遇到了错误
项目ABC中build.gradle
的内容:
buildscript {
dependencies {
classpath 'com.abc.gradle.plugins:staging-plugin:2.0.0-SNAPSHOT@jar'
}
}
我必须使用@jar,因为如果我不使用,http-builder将尝试下载cobertura:1.3.plugin,这是不可用的(但我认为这不是问题)。 但是当我运行这个项目时,它会产生NoClassDefFoundError错误。
运行此proct的命令:./ gradlew createStagingRepository
引起:java.lang.NoClassDefFoundError:org.apache.http.impl.client.DefaultHttpClient
httpclient-4.5.2.jar的内容
jar tvf httpclient-4.5.2.jar | grep "DefaultHttpClient"
2647 Sun Feb 21 17:04:42 PST 2016 org/apache/http/impl/client/SystemDefaultHttpClient.class
3537 Sun Feb 21 17:04:42 PST 2016 org/apache/http/impl/client/DefaultHttpClient.class
8123 Sun Feb 21 17:04:42 PST 2016 org/apache/http/impl/conn/DefaultHttpClientConnectionOperator.class