我有一个使用 Eclipse 编写的 Java WebStart (javaws) 应用程序。我已经导出并签署了所有 jar,编写了 .jnlp 文件等等。
以下是为简洁起见删除了一些操作系统资源的缩写 jnlp 文件:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+"
codebase="http://www.foobarx.com/"
href="fhr.jnlp">
<information>
<title>Foo Bar</title>
<vendor>foobarx.com</vendor>
<homepage href="http://www.foobarx.com" />
<description>Java App</description>
<icon href="daffodils.jpg" kind="splash"/>
</information>
<security>
<all-permissions />
</security>
<resources>
<jar href="fhr.jar" />
</resources>
<resources os="Windows" arch="x86_64">
<jar href="swt-4.2.2-win32-win32-x86_64.jar" />
</resources>
<resources os="Windows" arch="x86">
<nativelib href="swt-4.2.2-win32-win32-x86.jar" />
</resources>
<resources os="Linux" arch="amd64">
<nativelib href="swt-4.2-gtk-linux-x86_64.jar" />
</resources>
<application-desc main-class="com.foobarx.client.FBXApplication" />
</jnlp>
我可以在 Linux 或 Windows XP 32 位中从我的浏览器加载该应用程序,并且它可以完美运行。但是当我尝试从 Windows 7 64 位加载应用程序时,出现以下错误:
java.lang.NoClassDefFoundError: org/eclipse/swt/events/DisposeListener
在 64 位 Windows 7 机器上运行 32 位 JVM,因为浏览器是 32 位的,显然这就是它的完成方式。
当我在 Win7/64 上运行它时,Java 找不到 SWT 方法,尽管它确实加载了正确的 SWT 库文件,我已经验证了这一点。
manifest文件是Eclipse生成的,基本上是空的。我尝试通过键入一个点在类路径中添加当前工作目录,但这并没有改变任何东西。
综上所述,我有一个托管在远程服务器上的 Java Webstart 应用程序。我可以从 Linux 或 Windows XP 32 位浏览器中启动它。如果我尝试使用 32 位 JVM 从 Firefox 或 IE 的 Windows 7 Pro 64 位启动它,我会收到 NoClassDefFound 错误。有问题的类是 SWT 库中的一个类。
问题:
有没有人遇到过这种特定类型的部署问题,或者知道下一步该去哪里?
任何/所有帮助表示赞赏。