1

我正在尝试构建一个包来在 Eclipse 之外运行我的 SWT 应用程序。

在 linux 下,我已经成功地在 bash 下运行。但是当我尝试在 windows 下运行时,出现以下错误:

C:\nanoffline>java -cp "SebraeNaNOffline_lib_win_x86/*" -jar SebraeNaNOffline.jar 线程“main”java.lang.UnsatisfiedLinkError 中的异常:无法在 org.eclipse.swt 的 32 位 JVM 上加载 64 位 SW T 库。 internal.Library.loadLibrary(Library.java:214) at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194) at org.eclipse.swt.internal.C.(C.java:21) at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63) at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54) at org.eclipse.swt.widgets.Display.(Display .java:132) 在 br.com.infosolo.sebrae.nanoffline.IniciarOffline.(IniciarOffline.java:31)

我已经尝试指定参数-Djava.library.path,把SWT的DLLs放到windows、windows/system、windows/system32...

我正在使用以下 SWT JAR(随 eclipse 32 位 Windows 发行版一起提供:org.eclipse.swt.win32.win32.x86_3.100.1.v4234e.jar

类路径下的完整jar列表:

antlr-2.7.7.jar com.ibm.icu_4.4.2.v20110823.jar commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-digester-1.8.jar commons-lang-2.5.jar commons-logging-1.1.1.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.9.Final.jar hibernate-entitymanager-4.1.9.Final。 jar hibernate-jpa-2.0-api-1.0.1.Final.jar iText-2.1.7.jar jasperreports-4.8.0.jar jasperreports-fonts-4.8.0_0.jar javassist-3.17.1-GA.jar jboss- logging-3.1.0.GA.jar jboss-transaction-api_1.1_spec-1.0.0.Final.jar org.eclipse.core.commands_3.6.0.I20110111-0800.jar org.eclipse.core.databinding.beans_1.2.100 .I20100824-0800.jar org.eclipse.core.databinding.observable_1.4.0.I20110222-0800.jar org.eclipse.core.databinding.property_1.4.0.I20110222-0800.jar org.eclipse.core.databinding_1.4.0。 I20110111-0800.jar org.eclipse。core.runtime_3.7.0.v20110110.jar org.eclipse.equinox.common_3.6.0.v20110523.jar org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar org.eclipse.jface.databinding_1.5.0.I20100907-0800 .jar org.eclipse.jface.text_3.7.2.v20111213-1208.jar org.eclipse.jface_3.7.0.v20110928-1505.jar org.eclipse.nebula.widgets.formattedtext_1.0.0.201301250959.jar org.eclipse.osgi_3 .7.2.v20120110-1415.jar org.eclipse.swt.win32.win32.x86_3.100.1.v4234e.jar org.eclipse.swt_3.100.1.v4234e.jar org.eclipse.text_3.5.101.v20110928-1504.jar org .eclipse.ui.forms_3.5.101.v20111011-1919.jar org.eclipse.ui.workbench_3.7.1.v20120104-1859.jar sqlite-jdbc-3.7.15-SNAPSHOT.jar swt-awt-win32-4234.dll swt -gdip-win32-4234.dll 77.824 swt-webkit-win32-4234.dll swt-wgl-win32-4234.dll swt-win32-4234.dll swt-xulrunner-win32-4234.dll 焊接核心。jar 焊接-se.jar


我试图提取 swt dll(在 swt jar 中),但我得到了同样的错误(指定 -Djava.library.path 参数)。

我的 Windows 是 Windows XP 32 位,JVM 是 1.7.0_13 32 位。

当我尝试在带有 x64 swt 库的 windows 64 位(windows8)下运行时,会发生以下情况: C:\nanoffline>java -cp "SebraeNaNOffline_lib_win/*" -jar SebraeNaNOffline.jar 线程“main”中的异常 java.lang.UnsatisfiedLinkError:无法加载 SWT 库。原因:java.library.path 中没有 swt-gtk-3740 java.library.path 中没有 swt-gtk 无法加载库:C:\Users\Infosolo.swt\lib\win32\x86_64\swt-gtk-3740 .dll 无法加载库:C:\Users\Infosolo.swt\lib\win32\x86_64\swt-gtk.dll

    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:285)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194)
    at org.eclipse.swt.internal.C.<clinit>(C.java:21)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
    at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
    at br.com.infosolo.sebrae.nanoffline.IniciarOffline.<clinit>(IniciarOffl

ine.java:31)


在 Eclipse 下运行 swt 应用程序(从 eclipse 启动),一切正常。

提前致谢。

4

1 回答 1

0

我的问题是 META-INF\MANIFEST.MF 存档。

清单引用了 linux gtk SWT jar。

现在我已将所有 SWT LIB 更改为通用名称 swt.jar。当我更改平台时,我只需要用相同的名称替换 jar,而无需更改清单文件。

于 2013-02-13T17:36:46.573 回答