【问题标题】:How can I export the libs of a project in the jar?如何在 jar 中导出项目的库?
【发布时间】:2012-11-27 15:19:29
【问题描述】:

我正在制作一个 Android 库来实现通用 OAuth 身份验证(1.0a 和 2.0)。我正在使用路标库来签署 Http 请求。现在,当我尝试将我的项目导出为 .jar 文件(使用 Eclipse,右键单击 Project->Export->Java->Jar 文件)时,jar 已成功创建,但尚未导出路标库。

当我打开 .jar 文件时,我发现这些库存在,但它们对我正在导入它的项目不可见。如何从 jar 中公开这些库?

编辑:将库导入我的测试应用程序并调用函数OAuthFactory#authorize()(处理 OAuth 身份验证的自定义类)后,我会收到以下编译错误:The type oauth.signpost.exception.OAuthCommunicationException cannot be resolved. It is indirectly referenced from required .class files

【问题讨论】:

  • 您的 jars 位于哪个文件夹中?
  • jar 位于我项目的 /libs 文件夹中
  • 我可以访问我编写的类,但不能访问我的库正在使用的库的类。我还配置了我的库项目以在 Build Path->Configure Build Path->Order and Export 中导出库
  • 项目是否标记为库项目?
  • 是的。这是我检查的第一件事。

标签: java android eclipse jar


【解决方案1】:

这里也讨论过这个问题。

How to combine library with my jar?

当然,您可以提取 library-jars 并将提取的 class-files 添加到您自己的 jar 中, 但是这样你会失去对外部库版本的清晰视图。

最适合我的解决方案是将您的 JAR 文件与包含所有外部 JAR 文件的附加文件夹一起发送,然后在 /META-INF/MANIFEST.MF 中引用它们:

Class-Path: lib/kxml2-2.3.0.jar lib/log4j-1.2.16.jar

您可以通过这种方式将 JAR 文件保留在外部,而不必破坏您自己的 JAR 文件。

问候

克里斯托弗

【讨论】:

  • 我确实这样做了(从库中提取类文件并重新打包它,但这是一个相当混乱的解决方案,IMO。我会尝试您链接的解决方案并回复您。
  • 是的 - 我同意将提取的外部类文件包含到您的 jar 中是一个糟糕的解决方案。 AFAIK,将 JAR 文件打包到另一个 JAR 中并不是 Java 的意图。我认为我描述的解决方案是最好的和通用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2013-12-02
  • 2020-09-08
  • 2014-03-10
相关资源
最近更新 更多