Я создал библиотеку Android, в которой используется зависимость Android-Async. Этот проект библиотеки показывает все в порядке. Но когда я публикую эту библиотеку в локальном нексусе, а затем попытаюсь использовать ее в каком-то другом проекте, то в классе, где эта асинхронная библиотека использует show error, вот так:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/loopj/android/http/SyncHttpClient;
at com.myproject.installer.InstallerService.onHandleIntent(InstallerService.java:46)
Вот файл библиотеки библиотеки:
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
}
}
repositories {
jcenter()
mavenLocal()
mavenCentral()
maven {
url "http://nexus.local:8081/nexus/content/groups/public"
}
maven {
url 'https://maven.google.com'
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 17
targetSdkVersion 17
versionCode 5
versionName "0.1.4.1"
}
lintOptions {
abortOnError false
}
}
dependencies {
compile 'com.loopj.android:android-async-http:1.4.9'
}
apply plugin: 'maven-publish'
publishing {
publications {
myPublication(MavenPublication) {
artifacts {
groupId 'com.myproject.android'
artifactId 'installer-lib'
version project.android.defaultConfig.versionName
artifact 'build/outputs/aar/app-release.aar'
}
//The publication doesn't know about our dependencies, so we have to manually add them to the pom
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
//Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.compile.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
repositories {
maven {
url 'http://nexus.local:8081/nexus/content/repositories/thirdparty'
credentials {
username = 'admin'
password = getNexusPassword()
}
}
}
}
def getNexusPassword() {
Properties props = new Properties();
props.load(project.file('local.properties').newDataInputStream());
return props.getProperty('nexuspassword')
}
поэтому для создания и публикации этого библиотечного проекта я использую команду типа
gradle clean build and gradle publish
добавление дополнительной информации:
Я проверил, что на нексусе эта библиотека показывает, что в нее включена зависимость. Вот pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myproject.android</groupId>
<artifactId>installer-lib</artifactId>
<version>0.1.4</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.loopj.android</groupId>
<artifactId>android-async-http</artifactId>
<version>1.4.9</version>
</dependency>
</dependencies>
</project>
Кто-то имеет представление, почему я получаю сообщение об ошибке NoClassDefFoundError для зависимости?