0

我在 Eclipse 中使用 SWT 为我的 GUI 制作了一个小型应用程序。我通过安装 SWT Designer 来设置项目,这与仅用于 SWT 的 Swing Designer 非常相似。我通过转到 File >> New >> Other >> Window Builder >> SWT Designer >> SWT/JFace Java Project 创建了该项目。这为我设置了整个项目,因此我可以开始使用 SWT。当我使用 Eclipse 运行它时,我的程序成功运行。

不过,我希望能够在没有 Eclipse 的情况下运行它。我尝试通过文件 >> 导出 >> Java >> JAR 文件将其导出为 .jar。我选择了我的项目,点击下一步>>下一步,然后我设置我的主类并点击完成。没有错误。

打开 .jar 给了我:

线程“主”java.lang.NoClassDefFoundError 中的异常:org/eclipse/swt/widgets/Layout

很明显,SWT 不在它应该在的位置,所以我打开了 .jar,只找到了我的文件、META-INF 等。没有任何 SWT。没有 jar,没有 org 文件夹,nada。

在我的 Eclipse 项目中,在 Project Explorer 下,它列出了设置 SWT 内容的“Referenced Libraries”。在查看它的属性时,它列出了一堆 org.eclipse... 的东西。我认为这就是 Eclipse 知道要运行什么的方式,但它似乎没有导出它。

所以我的问题是:我如何让项目与与它一起打包的 SWT 一起导出,以便能够单独由 .jar 运行?如果您能解释手动方式(即编辑 META-INF 和拖放所需的 SWT 文件)以及解释 Eclipse 导出方式(这样我就不必一直手动方式),那就太好了),如果有办法在 Eclipse 中做到这一点。

编辑:如果你在下面看到我的回答,我解释了我是如何让这个工作的,但是,它会将价值约 16MB 的代码转储到我的 .jar 中,这对于最初小于 1MB 的项目来说相当大。如果您对如何使其仅添加使用过的文件有任何想法,仍然感谢您的回答。;)

4

2 回答 2

0

听起来你不是在使用 OSGI,我的建议是转到你的 eclipse 插件目录,将 swt jar 复制到你的插件中,然后通过清单编辑器、运行时选项卡并选择 jar 将其添加到类路径中。如果您正在运行 osgi 应用程序,请确保您的 .product 文件具有正确的依赖项,方法是转到 .product 编辑器依赖项选项卡并选择添加所需的插件。如果您在不同的上下文评论中运行它,我会回答。

于 2012-11-21T02:24:31.683 回答
0

我成功完成这项工作的方法是将其导出为可运行的JAR。

我让它工作的步骤:

运行主类。(我专门使用了 CTRL+F11,默认在类上运行,让 Eclipse 猜测它应该如何运行。)

转到文件 >> 导出 >> 可运行 JAR

选择我的启动配置。(当我点击 Juno 顶部栏上运行按钮旁边的箭头时,它就会列出。)

点击完成键并等待!

于 2012-11-21T03:03:02.810 回答