此类文件的 Jar 属于容器“Android Dependencies”,该容器不允许修改其条目上的源附件
Posted
技术标签:
【中文标题】此类文件的 Jar 属于容器“Android Dependencies”,该容器不允许修改其条目上的源附件【英文标题】:The Jar of this class file belongs to container 'Android Dependencies' which does not allow modifications to source attachments on its entries 【发布时间】:2012-04-21 23:00:18 【问题描述】:我正在制作一个电子邮件应用程序,该应用程序在此问题的标题中给出了错误。我该如何解决这个问题?如果有助于找到解决方案,我将提供我的代码截图。
【问题讨论】:
WindRider 的回答是正确且官方的。您应该更改您的接受,以便未来的用户可以找到答案。 请考虑接受的答案,因为当前接受的答案不是解决方案。 【参考方案1】:似乎是他们在 ADT r17 中故意破坏的东西。见http://code.google.com/p/android/issues/detail?id=27490#c6。
【讨论】:
感谢您的回答。我通过向应用程序添加另一个 jar 解决了这个问题,因为我已经将 eclipse ADT 升级到 r17。但是这个问题的原因是r17。再次感谢 另外请注意,这计划在 ADT r20 中修复(在预览版 2 中,截至我撰写本文时尚未发布)。见code.google.com/p/android/issues/detail?id=27490#c21。 请参阅 WindRider 提供的答案 - 它提供了有关我在之前评论中提到的修复的详细信息。【参考方案2】:注意评论 8 中的解决方法
http://code.google.com/p/android/issues/detail?id=27490#c8。 “您好,我已经解决了评论 3 中描述的问题:
-
将内容从 libs 文件夹移回 lib,因为 ADT 17 会自动添加 Android 依赖项下 libs 目录中的所有 jar。
从您的 lib 目录添加依赖项作为正常的 eclipse 依赖项(ADT 17 之前的旧方法)。将 JAR 文件与其源 JAR 文件或 Javadoc 链接起来。
在项目属性 -> Java 构建路径 -> 排序和导出检查所有添加的依赖项以包含在项目类文件中。
选择 Android 工具 > 修复项目属性"
【讨论】:
【参考方案3】:对此有官方解决方案:
允许库中的 3rd 方 jar 的 src/doc 附件/
由于这些 jar 是通过类路径容器动态添加的, 开发人员无法通过 Eclipse UI 设置源路径和 javadoc (容器不允许编辑这些)。解决这个问题,并确保 这两条路径不仅被当前项目拾取,而且 也由其他项目(如果当前项目是库项目), 该值由 jar 文件旁边的文件设置。该文件是 jar 文件后的名称,在末尾添加 .properties。例如 foo.jar -> foo.jar.properties 它目前可以包含 2 个属性: src:源文件夹(或存档)的相对或绝对路径。文档: 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
以查看其源代码。
【讨论】:
非常感谢,这绝对是问题的正确答案。我已经编辑了您的帖子,以便为未来的观众提供一个示例。 如果jar是通过workspace中的另一个android项目添加的(设置>android>添加库项目)? 谢谢!注意。我还需要重启 Eclipse 才能生效。 谢谢!看来您实际上需要 src 和 doc。我尝试仅添加 src,但在添加 doc 之前它不起作用。 我不需要做 gunar 描述的(在 Eclipse Juno 中),所以这要么已经修复,要么 guno 的问题是由其他原因引起的。【参考方案4】:在使用 javax.mail 访问 gmail 时遇到了同样的问题。根据此链接(http://***.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】:当您使用 eclipse 时,您可以通过选择您的库项目并转到 Properties > Order and Export 并将您的 src 依赖项移动到 gen 依赖项之上来修复它。你也可以手动编辑你的 .classpath 文件来做同样的事情。清理此项目后,源附件应该可以工作。找出解决方案的积分转到NightCrawler
【讨论】:
这对我有用!我所做的是:右键单击作为我主要项目的库的项目。选择properties
-> java build path
-> order and export
-> 将[projectname]/src
行一直移到顶部!!
这对我也有用。基本上,我将 [projectname]/src 移到 [projectname]/.apt_generated; 上面。后者被选为应用程序项目中的源
我几乎尝试了所有其他公认的答案,但没有结果。一旦我意识到它需要在图书馆中完成,这对我有用。我一直对宿主项目这样做,但什么也没做。【参考方案6】:
我终于找到了真正最简单的解决方案。
这是使用 IDE,并且始终可以正常工作。最简单的解决方案。
如果您有一个复杂的结构,其中一个库项目使用一个库,并且该库项目用于您的项目,依此类推。或者在任何情况下......这样做来解决这个问题:
导入eclipse你想要的库,可以看到调试过程的源代码。
通过右键单击项目 > 属性 > Android 标记 Is Library 选项
然后转到所有使用该库的库项目, 并右键单击项目 > 属性 > Android > 添加 > 并选择您的库。
然后,转到您的项目和在 Project>Properties>Android>Library_name 中的库项目,单击删除并再次添加它,以便能够假设库项目中的更改。
仅此而已。它只是使用库本身的项目,而不是仅使用您要查看源代码的库的jar。
【讨论】:
【参考方案7】:也试试这个解决方案:转到项目文件夹并打开 .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"/>
。就我而言,它解决了所有问题。
【讨论】:
以上是关于此类文件的 Jar 属于容器“Android Dependencies”,该容器不允许修改其条目上的源附件的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:libgthread-2.0.so.0:无法打开共享对象文件:使用 Docker 容器导入 cv2 时没有此类文件或目录
如何在 docker 容器中定义环境变量以与我的 jar 文件一起使用 [重复]
通过命令验证docker容器相当一个轻量级的Linux运行环境,且每个容器内都有一个属于自己的文件系统,容器之间相互隔离