此类文件的Jar属于容器'Android Dependencies',它不允许修改其条目上的源附件

时间:2012-04-09 15:21:46

标签: android dependencies javamail

我正在制作一个电子邮件应用程序,它在这个问题的标题中给出错误。我该如何解决这个问题?如果找到解决方案有帮助,我会给我的代码截图。

enter image description here

7 个答案:

答案 0 :(得分:36)

有一个官方解决方案:

  

允许在libs /

中为第三方jar提供src / doc附件      

由于这些jar是通过类路径容器动态添加的,   开发人员无法通过Eclipse UI设置源路径和javadoc   (容器不允许编辑那些)。解决这个问题,并确保   这两条路径不仅被当前项目所接收,而且被接收   也可以通过其他项目(如果当前项目是图书馆项目),   该值由位于jar文件旁边的文件设置。该文件是   在jar文件后面添加名称,最后添加.properties。例如   foo.jar - > foo.jar.properties它当前可以包含2个属性:   src:源文件夹(或存档)的相对或绝对路径。 DOC:   javadoc的相对或绝对路径。

https://android-review.googlesource.com/#/c/35702/

编辑:Explanation in Google I/O 2012 video

示例,对于Joda-Time 2.1:

cd $PROJECT/libs
touch joda-time-2.1.jar.properties

并插入以下内容,确保路径正确无误:

src=/Users/josh.oneal/SDKs/joda-time-2.1/joda-time-2.1-sources.jar
doc=/Users/josh.oneal/SDKs/joda-time-2.1/joda-time-2.1-javadoc.jar

您现在可以在Eclipse中右键单击项目并刷新,然后按Command / Ctrl +单击DateTime等类来查看其来源。

答案 1 :(得分:10)

似乎是ADT r17中故意破坏的东西。请参阅http://code.google.com/p/android/issues/detail?id=27490#c6

答案 2 :(得分:10)

当您使用eclipse时,您可以通过选择您的库项目来修复它,然后转到属性>顺序和导出并将您的src依赖项移到gen依赖项之上。您也可以手动编辑.classpath文件来执行相同操作。清理此项目后,源附件应该可以工作。找出解决方案的积分转到NightCrawler

答案 3 :(得分:3)

请注意评论8中的解决方法

http://code.google.com/p/android/issues/detail?id=27490#c8。 “您好,我已经解决了评论3中描述的问题:

  1. 将内容从libs文件夹移回lib,因为ADT 17会自动添加Android依赖项下libs目录下的所有jar文件。
  2. 将lib目录中的依赖项添加为正常的eclipse依赖项(ADT 17之前的旧方法)。将JAR文件与其源JAR文件或Javadoc链接。
  3. 在项目属性中 - > Java构建路径 - >订购和导出检查所有添加的依赖项,以包含在项目类文件中。
  4. 选择Android工具>修复项目属性“

答案 4 :(得分:2)

使用javax.mail访问gmail时遇到同样的问题。根据这个链接(http://stackoverflow.com/questions/6546926/could-not-find-class-error-when-trying-to-upload-a-video-to-youtube-using-the-gd),它和Android似乎存在某种问题。

我通过使用此JAR文件解决了这个问题:http://code.google.com/p/javamail-android/

答案 5 :(得分:2)

我终于找到了真实而简单的解决方案。

这是使用IDE,并且将始终有效。最简单的解决方案。

如果您有一个复杂的结构,其中一个库项目使用库,并且该库项目用于您的项目,依此类推。或者无论如何......这样做是为了解决这个问题:

导入以删除您希望能够查看调试进程的源代码的库。

通过右键标记库选项单击项目>属性> Android

然后转到使用该库的所有库项目, 并右键单击该项目>属性> Android>添加>并选择你的图书馆。

然后,转到项目和项目>属性> Android> Library_name中的库项目,单击删除并再次添加,以便能够承担库项目中的更改。

就是这样。它只是使用库本身的项目而不是仅使用您想要查看源代码的库的jar。

答案 6 :(得分:0)

同样尝试这个解决方案:转到项目文件夹并打开.classpath文件。 这里以这种方式重新排序classpathentry

<?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>

首先是<classpathentry kind="src" path="src"/>,第二个是<classpathentry kind="src" path="gen"/>。就我而言,它解决了所有问题。