Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jcenter的依赖项是否编译到aar库中?_Java_Android_Maven_Android Studio - Fatal编程技术网

Java jcenter的依赖项是否编译到aar库中?

Java jcenter的依赖项是否编译到aar库中?,java,android,maven,android-studio,Java,Android,Maven,Android Studio,我在Android Studio中创建了一个库(aar),其中包含一些依赖于Joda时间类的实用方法。我在gradle文件中使用jcenter的依赖项和以下代码行 编译“joda时间:joda时间:2.9.4” 然后,我将我的库添加到一个私有的maven存储库中,创建了一个新的Android项目,并从这个repo中将我的库添加到其中 当我尝试在新项目中使用我的库的方法时,出现以下错误:- java.lang.NoClassDefFoundError:org.joda.time.DateTime

我在Android Studio中创建了一个库(aar),其中包含一些依赖于Joda时间类的实用方法。我在gradle文件中使用jcenter的依赖项和以下代码行

编译“joda时间:joda时间:2.9.4”

然后,我将我的库添加到一个私有的maven存储库中,创建了一个新的Android项目,并从这个repo中将我的库添加到其中

当我尝试在新项目中使用我的库的方法时,出现以下错误:-

java.lang.NoClassDefFoundError:org.joda.time.DateTime

我尝试返回我的库,没有通过jcenter包含joda time,而是将.jar文件直接添加到我的“libs”文件夹中。这次,当我在新项目中尝试这些方法时,它们奏效了,我没有收到上述错误


这是否意味着当从jcenter包含依赖项时,依赖项实际上不会编译到aar文件中?有办法吗?

AAR文件只包含已编译的索引代码、清单(部分)和库的资源。当您将joda time的jar文件复制到项目中时,它将被构建到AAR中。当使用gradle依赖项时,gradle(以及Android Studio)知道如何解析用于构建AAR的joda时间库,但仅此而已。因为您的AAR是在jcenter上发布的,所以您需要有一个AAR的maven清单,它还将joda时间列为一个依赖项。之后,Project将能够将您的库作为依赖项列出,而对joda time的依赖将由gradle(通过其maven支持)解决。

这很好地解释了这一点,谢谢。我使用的是maven publish,只是发布了.aar工件。我给它添加了依赖项,它成功了。@Omelete和Larry,只是想引起你的注意,因为我认为你已经找到了答案!谢谢