如何在eclipse或命令行中创建可执行jar时排除外部jar?

时间:2009-02-24 19:23:13

标签: eclipse jar

我在Eclipse IDE中编写了一个使用BouncyProvider类BouncyCastle.jar的程序。因此,为了编译我的类,我在项目类路径中添加了BouncyCastle.jar,它编译得非常完美。

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

但我希望保持我的应用程序jar和BouncyCastle.jar彼此不同。

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

3 个答案:

答案 0 :(得分:3)

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

  1. 点击“文件|导出”。出口 对话框弹出。
  2. 展开“Java”文件夹并选择 “JAR文件”(不是“Runnable JAR 文件“)。单击”下一步“。在JAR文件上 规范页面,选择 你想要包含在jar中的类 文件,并指定名称 要创建的JAR文件。单击“下一步”。
  3. 在JAR包装选项页面上, 选择适合您的选项。 默认值可能很好。 单击“下一步”。
  4. 关于JAR清单规范, 确保为您的jar文件选择“主类”。这是 将在何时执行的类 你执行jar文件。 如果你 把这个留空,jar文件会 不可运行。单击“完成” 创建jar文件。
  5. 您应该能够通过从命令行执行“ java -jar myjarfile.jar -classpath BouncyCastle.jar ”来执行jar文件。

答案 1 :(得分: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)

并观察您的包裹名称是否有冲突。

Here's an open Java bug ID I found describing your situation

One-JAR may help - a open source solution to your situation

答案 2 :(得分:0)

看起来这已经在Eclipse 3.5里程碑5中添加了。请参阅News了解最新版本和bug 219530