Java Jar在Linux上寻找Windows SWT库

问题描述

一年前,我创建了一个在Windows上开发并部署到Linux的Eclipse项目。我使用了SWT,并且能够使用适当的SWT jar在Linux上运行它。没问题。

最近,我用相同的MO启动了一个新项目:在Windows上开发,部署到Linux,使用SWT。我使用了与有效项目相同的项目结构,但在Linux上无法使用。当我尝试在Linux上运行新项目时,它出现了UnsatisfiedLinkError:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-win32-4924r25 in java.library.path
no swt-win32 in java.library.path
Can't load library: /home/hmartin/.swt/lib/linux/x86_64/libswt-win32-4924r25.so
Can't load library: /home/hmartin/.swt/lib/linux/x86_64/libswt-win32.so

对我来说看起来很奇怪的是,它似乎正在寻找Windows版本的SWT jar,而我不明白为什么会这样。我摆弄了项目首选项,构建路径,build.xml,清单等。

我确实有一个清单,该清单应该告诉应用程序其SWT库在哪里(与应用程序jar位于同一目录中),但是我怀疑我的项目不知道它的存在。通过一年前的工作项目,我记得能够让Eclipse在导出时生成清单文件,这就是我所做的。有了这个(中断的)项目,我将无法生成清单文件,也无法选择在导出时从工作空间中选择一个清单文件。这次,我只是自己制作了一个清单文件,遵循了命名约定,并希望魔术发生了。魔术没有发生。

非常感谢您的帮助,建议,推荐等。

解决方法

玩完一个测试项目并导出设置后,我发现问题的原因是JAR导出屏幕上的一个复选框:“导出生成的类文件和资源”。我没有选中此框,这意味着(出于某种原因)Eclipse将不会向我显示生成或选择清单的选项。选中该复选框并选中清单后,新项目现在可以在目标平台上运行。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...