我有一个使用 swt 作为界面的 java webstart 应用程序(并且包括 DJ Native Swing)。该应用程序在 Windows 上运行良好,直到我尝试将 linux 和 mac osx swt jar 添加到应用程序以支持这些平台。当从 netbeans 启动时,应用程序在 linux 下运行良好,只链接了正确的 jar,但是在任何平台上通过 java webstart 启动应用程序时,似乎加载了错误的 jar 文件。
这就是我在 launch.jnlp 中的内容(以及其他内容):
<resources os="Windows" arch="x86">
<j2se java-vm-args="-Xmx512m" version="1.5+"/>
<jar href="lib/swt-win32-x86.jar"/>
<nativelib href="lib/swt-win32-x86.jar"/>
</resources>
<resources os="Windows" arch="x86_64">
<j2se java-vm-args="-Xmx512m" version="1.5+"/>
<jar href="lib/swt-win32-x86_64.jar"/>
<nativelib href="lib/swt-win32-x86_64.jar"/>
</resources>
<resources os="Windows" arch="amd64">
<j2se java-vm-args="-Xmx512m" version="1.5+"/>
<jar href="lib/swt-win32-x86_64.jar"/>
<nativelib href="lib/swt-win32-x86_64.jar"/>
</resources>
<resources os="Linux" arch="i386">
<j2se java-vm-args="-Xmx512m" version="1.5+"/>
<jar href="lib/swt-linux-x86.jar"/>
<nativelib href="lib/swt-linux-x86.jar"/>
</resources>
<resources os="Linux" arch="amd64">
<j2se java-vm-args="-Xmx512m" version="1.5+"/>
<jar href="lib/swt-linux-x86_64.jar"/>
<nativelib href="lib/swt-linux-x86_64.jar"/>
</resources>
<resources os="Mac OS X" arch="x86_64">
<j2se java-vm-args="-XstartOnFirstThread -Xmx512m" version="1.5+"/>
<jar href="lib/swt-macos-x86_64.jar"/>
</resources>
<resources os="Mac OS X" arch="x86">
<j2se java-vm-args="-XstartOnFirstThread -Xmx512m" version="1.5+"/>
<jar href="lib/swt-macos.jar"/>
</resources>
如果我理解正确,这应该会导致在 Windows(取决于拱门)上只加载 swt-win32-x86.jar。但是当我在 windows 7 64 位上启动应用程序时,但使用 32 位 jvm 时,我收到以下错误: NativeSwing [1]:原因:java.lang.UnsatisfiedLinkError:无法加载 SWT 库。原因: NativeSwing[1]:java.library.path 中没有 swt-gtk-4234 NativeSwing[1]:java.library.path 中没有 swt-gtk NativeSwing[1]:无法加载库:C:\Users\ dolf.swt\lib\win32\x86\swt-gtk-4234.dll NativeSwing[1]:无法加载库:C:\Users\dolf.swt\lib\win32\x86\swt-gtk.dll
当然,在 Windows 上找不到 swt-gtk,它应该只在 Linux 上需要。如果我在 java 的临时 Internet 文件查看器下检查 java 控制面板中的资源,我确实看到 java webstart 已经下载了 swt-linux-x86.jar 和 swt-win32-x86.jar。显然,java webstart 正在下载错误的 jar 文件。
我希望有人知道为什么会出错。