0

我目前正在 Eclipse 上通过 Mobile Tools for Java (MTJ) 使用 J2me。我的程序需要通过 RSA 加密 SMS 消息,所以我尝试使用 bouncycastle 库。我下载 bouncycatle 1.47 版并添加到我的构建路径中。构建项目时不会出现问题。但是当我尝试在模拟器上运行时,我得到了这个错误:

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

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

问候。

4

1 回答 1

1

“订购和出口”并没有像您想象的那样工作。如果您有两个项目 - ProjectA 和 ProjectB 并且 ProjectA 依赖于 ProjectA,那么如果 ProjectA 需要 some.jar 并且您发现 ProjectB 也需要 some.jar,那么 ProjectA 中该 jar 的“订购和导出”使其“可见”也适用于 ProjectB。

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

  1. 您可以解压缩所需的 JAR 并将类文件添加到您的 jar 中,jar -u可以帮助您(这似乎很困难,但如果您使用的是 ant 或 maven,您将配置一次)
  2. 您可以尝试使用MANIFEST 标头
于 2012-04-06T12:56:55.360 回答