【问题标题】:How to include external libraries in multiple projects without making multiple copies android java如何在多个项目中包含外部库而不制作多个副本android java
【发布时间】:2012-12-26 13:49:05
【问题描述】:

我在为 Android 编写的许多不同活动中使用 afreechartedu.emory.mathcs.jtransformsorg.afree.chart。我在配置每个新项目时遇到了很大的麻烦,以便我可以

  1. 当我在 Eclipse IDE 中编写代码时,“查看”库中的类。
  2. 请参阅这些类的附加源代码
  3. 请参阅附加的这些类的 javadoc
  4. 当我尝试运行我的 Activity 时,请查看这些类的 .class 文件。

我现在要做的是为我使用的每个库制作一份 .jar、doc src 和 .properties 的副本。我将这四件事复制到我正在创建的每个项目(每个活动一个)的本地 lib 文件夹中。

我一定错过了一些简单的东西。很明显,我应该将这些库及其 doc、src 和 .properties 放在一个位置,并且我应该能够在使用这些库的每个项目中引用该位置。但我还没有弄清楚如何做到这一点。请告诉我怎么做。

如果有一种方法可以定义一组 jars 和相关的 src & doc,我所做的任何新的 eclipse 项目都会自动并始终搜索它们,那就更好了。

在关于外部库的答案后添加编辑:

确实,我确实将 jtransforms-2.4.jar 放在了外部目录中。在同一个目录中,我放置了包的 src 和 doc,以及一个带有 doc 和 src 条目的文件 jtransforms-2.4.properties,它们指向带有 doc 和 src 的本地文件。我将它们作为外部 jar 添加到我的构建路径中。

1) Eclipse IDE 确实在 .jar 中找到了这些类,并且没有将任何内容标记为丢失。 2) 文档和 src 显示为未附加。 如何将 doc 和 src 信息与库一起放置,以便它们自动显示我将 jar 链接为外部 jar 的每个位置? 3)当我尝试运行该应用程序时,我得到了“jar中所有类的NoClassDefFound错误。也就是说,Eclipse IDE可以在外部库中找到这些类,但它们没有进入到类路径中应用程序。

总结:所以“外部 jar”技术在三个重要方面中的两个方面都失败了: 1) Eclipse IDE 中没有显示 src 和 doc 2) 不向 App 提供更新的类路径。

最后:当我将 jar、.properties、doc 和 src 复制到项目的 lib 文件夹中并删除外部 jar 引用时,一切正常。

所以我重申我最初的问题,给出的答案(添加到构建路径作为外部 jar)没有解决任何问题。

【问题讨论】:

  • 我很乐意接受一个答案,只要我有一个可行的答案就会去做。查看对问题的新修改。

标签: java android eclipse shared-libraries


【解决方案1】:

您可以将maven 与 android 一起使用,如果 jar 在 maven Central 中,您只需要引用它。如果没有,只需将其放入本地 maven 存储库(我在本地机器上运行一个)。

Maven 将管理诸如此类的依赖项。由于 eclipse 也有一个 maven 插件,它也会正确地看到您的项目引用。我最近进行了切换,非常值得(但需要几天时间才能正确设置)。

【讨论】:

  • 起初这看起来太难了,但我稍后会尝试,因为没有其他方法。
【解决方案2】:

这里的关键字是外部。您可以将库添加到项目中,而无需将它们放在本地 lib 文件夹中。您只需将它们添加为“外部档案”即可。

您还可以通过项目的属性添加和更改它们。
虽然我认为这不是一个好主意,但为您创建的每个项目添加一些库,可能会有一个脚本,但 imo 它不是内置函数。
编辑: 好吧,它不是真正内置的,对我来说看起来很老套,但this 线程可能对你有用。它包含一种通过属性文件解决问题的方法。您只需创建一次此文件并将其添加到您的项目中。所以这是半自动的 ;)
但我认为这个解决方案比将它添加到每个项目中要好,因为你不应该每次都需要所有这些库......
编辑 2:(在你的之后) 至于第一点:
该库不能作为外部库工作的原因可能有多种:

  1. 您在该文件夹中没有正确的权限
  2. 您的类路径中有多个版本的库。删除那些其他引用,然后重试

正如我已经提到的,仅将其添加到类路径不会自动提供链接的 src 和文档。我建议查看上面的链接。使用这种技术,您可能会半自动地实现您的目标。
但是,如果您在 Google 上搜索外部 jars 和 eclipse,您会遇到许多与您遇到相同问题的人。所以通常它应该开箱即用。你介意更新你的日食吗? 另一个修改: 我完全忘记了您正在编写 Android 应用程序这一事实。嗯,这是一个非常特殊的情况。关于这个问题有很多个话题。也许您还应该查看this one。使用 ADT17 将库放置在库中会触发自动导入。这就是它为您工作的原因。(当您将它放在 /libs 中时)

【讨论】:

  • 我很乐意接受您的回答,除非它不起作用:有关详细信息,请参阅已编辑的原始问题。
  • 您是否尝试过我的链接中答案提供的解决方案?因为仅将其添加为外部库不包括 src 和 docs。除此之外,您的异常行为很奇怪。我会再看一遍。
猜你喜欢
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
相关资源
最近更新 更多