5

我在 Eclipse IDE 中编写了一个程序,它使用 BouncyCastle.jar 的 BouncyProvider 类。所以为了编译我的类,我在我的项目类路径中添加了 BouncyCastle.jar,它编译得很好。

现在我想将我的项目导出为 Runnable JAR,所以当我从 Eclipse 执行此操作时,默认情况下它也会在该可运行 jar 中添加 BouncyCastle.jar 的类。

但我想让我的应用程序 jar 和 BouncyCastle.jar 彼此不同。

我怎样才能做到这一点?有人可以帮忙吗?

4

3 回答 3

3

听起来您想使用“导出 JAR 文件”向导而不是“导出可运行 JAR 文件”向导。导出可运行的jar 文件时,Eclipse 会尝试将运行应用程序所需的所有内容打包到单个存档中。另一方面,“导出 JAR 文件”向导使您可以更好地控制归档中打包的内容。您仍然可以创建一个可运行的 jar 文件,但您必须确保在执行 jar 时在类路径中包含 BouncyCastle.jar。以下是分步说明:

  1. 单击“文件|导出”。导出对话框弹出。
  2. 展开“Java”文件夹并选择“JAR 文件”(不是“可运行的 JAR 文件”)。点击下一步。在 JAR 文件规范页面上,选择要包含在 jar 文件中的类,并指定要创建的 JAR 文件的名称。点击下一步。
  3. 在 JAR Packaging Options 页面上,选择适合您的选项。默认值可能没问题。点击下一步。
  4. 在 JAR Manifest Specification 中, 确保为您的 jar 文件选择“主类”。这是执行 jar 文件时将执行的类。如果将此留空,则 jar 文件将不可运行。单击完成以创建 jar 文件。

您应该能够通过从命令行执行“ java -jar myjarfile.jar -classpath BouncyCastle.jar ”来执行 jar 文件。

于 2009-02-24T22:12:31.553 回答
1

不幸的是,看起来你实际上不能这样做。JAR 不能使用存储在自身内部的另一个 JAR。

我会说,除非你有一个非常充分的理由不能解压你的 BouncyCastle.jar(比如可能是许可问题?)

让它解压(您可以通过在 Eclipse 中将 BouncyCastle.jar 添加为外部存档来完成:)

Right-click on your project
Build Path...
Add External Archives...
Add your archive
Export as runnable JAR)

并注意您的包名称是否存在冲突。

这是我发现的描述您的情况的开放 Java 错误 ID

One-JAR 可能会有所帮助 - 针对您的情况的开源解决方案

于 2009-02-24T19:47:44.007 回答
0

看起来这已添加到 Eclipse 3.5 Milestone 5 中。有关最新版本和错误 219530 ,请参阅新闻

于 2009-02-26T22:19:24.063 回答