【发布时间】:2013-05-15 14:33:53
【问题描述】:
我有一个在 OSX 上开发的 SWT 应用程序,因此它包含 Mac 版本的 SWT 库。
现在我需要在 Windows 机器上运行这个应用程序。我将应用程序导出到 .jar 文件,但是当我尝试在 Windows 中执行 jar 时,我得到:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-cocoa-4236 in java.library.path
no swt-cocoa in java.library.path
Can't load library: \\psf\Home\.swt\lib\win32\x86\swt-cocoa-4236.dll
Can't load library: \\psf\Home\.swt\lib\win32\x86\swt-cocoa.dll
at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
at display.StoragePickupDisplay.open(StoragePickupDisplay.java:70)
at display.StoragePickupDisplay.main(StoragePickupDisplay.java:58)
... 5 more
我已经添加了 Windows 版本的 SWT 库,但这并没有什么不同。我需要 Mac 库在那里继续开发。我该如何解决这个问题?
【问题讨论】:
-
从这个错误日志中我了解到您的 java 路径中没有必要的 jar 包?您的 Windows 环境中的 java 路径在哪里?尝试将必要的 jar 复制到您的 windows 路径或尝试将它们添加到您的构建路径。
-
你在windows中设置了CLASSPATH吗?如果你设置了它,你可能没有将你的 jar 文件添加到类路径中。它已经在说:“无法加载 SWT 库。” java库之间没有区别。每个库都适用于 mac、linux 和 windows。因为他们正在开发 JVM。
-
@kodmanyagha 错误,SWT 依赖于平台,因为它使用操作系统本机代码。您必须提供正确版本的库。
标签: java windows macos swt cross-platform