Java 如何在jar中导出项目的libs?

Java 如何在jar中导出项目的libs?,java,android,eclipse,jar,Java,Android,Eclipse,Jar,我正在制作一个Android库来实现通用的OAuth身份验证(1.0a和2.0)。我正在使用路标库对Http请求进行签名。现在,当我尝试将我的项目导出为.jar文件时(使用Eclipse,右键单击project->export->Java->jar文件),jar被成功创建,但它没有导出路标库 当我打开.jar文件时,我发现这些库是存在的,但是它们对于我导入它的项目是不可见的。如何从jar公开这些库 编辑:一旦我将库导入到我的测试应用程序并调用函数,OAuthFactory#authorize()

我正在制作一个Android库来实现通用的OAuth身份验证(1.0a和2.0)。我正在使用路标库对Http请求进行签名。现在,当我尝试将我的项目导出为.jar文件时(使用Eclipse,右键单击project->export->Java->jar文件),jar被成功创建,但它没有导出路标库

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


编辑:一旦我将库导入到我的测试应用程序并调用函数,
OAuthFactory#authorize()
(处理OAuth身份验证的自定义类),我会得到以下编译错误:
类型OAuth.signpost.exception.OAuthCommunicationException无法解析。它是从必需的.class文件中间接引用的

这里也讨论了这个问题

当然,您可以提取库jar并将提取的类文件添加到您自己的jar中, 但这样会使外部库的版本失去清晰的视图

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

Class-Path: lib/kxml2-2.3.0.jar lib/log4j-1.2.16.jar
您可以通过这种方式将JAR文件留在外部,而不必破坏自己的JAR文件

问候


克里斯托弗

这里也讨论了这个问题

当然,您可以提取库jar并将提取的类文件添加到您自己的jar中, 但这样会使外部库的版本失去清晰的视图

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

Class-Path: lib/kxml2-2.3.0.jar lib/log4j-1.2.16.jar
您可以通过这种方式将JAR文件留在外部,而不必破坏自己的JAR文件

问候


Christopher

您的JAR位于哪个文件夹中?JAR位于我的项目的/libs文件夹中。我可以访问我编写的类,但不能访问我的库正在使用的libs的类。我还将我的库项目配置为在Build Path->Configure Build Path->Order和export中导出libs,项目是否标记为库项目?是的。这是我检查的第一件事。您的JAR位于哪个文件夹中?JAR位于我的项目的/libs文件夹中。我可以访问我编写的类,但不能访问我的库正在使用的libs的类。我还将我的库项目配置为在Build Path->Configure Build Path->Order和export中导出libs,项目是否标记为库项目?是的。这是我检查的第一件事,我做到了(从库中提取类文件并重新打包,但这是一个相当混乱的解决方案,IMO。我将尝试您链接的解决方案,然后返回给您。是的-我同意将提取的外部类文件包含到jar中是一个糟糕的解决方案。好吧,Java不打算将jar文件打包到另一个jar中。我认为该解决方案我描述的是最好的和通用的。我做到了(从库中提取类文件并重新打包,但这是一个相当混乱的解决方案,IMO。我将尝试您链接的解决方案,然后返回给您。是的-我同意将提取的外部类文件包含到jar中是一个糟糕的解决方案。好吧,Java不打算将jar文件打包到另一个jar中。我认为该解决方案我描述的是最好的和通用的。