如何在eclipse中将外部jar包装到输出jar文件中

时间:2012-04-06 10:07:57

标签: java eclipse eclipseme

我目前正在Eclipse上通过Mobile Tools for Java(MTJ)使用J2me。我的程序需要通过RSA加密SMS消息,所以我尝试使用bouncycastle库。我下载bouncycatle版本1.47并添加到我的buildpath。构建项目时没有问题。但是,当我尝试在模拟器上运行时,我收到此错误:

TRACE: <at java.lang.NoClassDefFoundError: org/bouncycastle/crypto/engines/RSAEngine>, startApp threw an Exception

这是一个常见的问题,NoClassDefFound。为了解决这个问题,我知道我必须在classpath中包含bouncycastle的类文件。但是问题来了,我不能将bouncycastle类文件打包到MTJ创建的jar中。对于常规项目,我需要做的就是勾选“Order and Export”选项卡中的复选框,将“ticked”引用库中的所有类文件打包到输出jar中。我在这里做同样的事情,但在我创建包之后,我检查新的jar文件,并且没有内部的bouncycastle类(使用WinRar检查)。我做了一些 我正在使用Eclipse Indigo Release 2,build-id:20120216-1857,MTJ版本1.1.2。 我也尝试通过eclipse Pulsar 1.3.1创建包,但问题仍然存在。 有什么建议吗?这是一个错误吗?

问候。

1 个答案:

答案 0 :(得分:1)

“订单和导出”无法正常工作。如果您有两个项目 - ProjectA和ProjectB以及ProjectA依赖于ProjectA,那么如果ProjectA需要some.jar并且您发现ProjectB也需要some.jar,那么ProjectA中该jar的“Order and Export”使其“可见”也适用于ProjectB。

对于JAR文件,您无法将另一个jar添加到JAR文件中(它适用于WAR和EAR)。如何解决这个问题有两种可能性

  1. 你可以解压缩所需的JAR并将类文件添加到jar中,jar -u可以帮助你(这看起来很难,但如果你使用ant或maven,你将配置一次)
  2. 您可以尝试使用MANIFEST headers