我在 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 的项目来说相当大。如果您对如何使其仅添加使用过的文件有任何想法,仍然感谢您的回答。;)