即使客户端是64位,javaws总是加载32位库

时间:2013-08-26 14:00:02

标签: java windows 64-bit java-web-start jnlp

我有一个传递JaNeLa的jnlp文件,所以它没有错误。 Web启动应用程序在Linux和Windows 32位上运行良好。它无法在Windows 64位上运行。我设计了以下测试来确定javaws是否正在加载正确的本机库:

  • 将jnlp文件中的库文件名更改为不存在的文件
  • 加载应用以强制找不到文件错误,以查看它正在尝试加载的文件

这是jnlp存根(文件的其余部分很好......相信我):

<resources os="Windows" arch="x86_64">
        <nativelib href="swt-4.2-win32-x86_64.jarx" />
    </resources>

    <resources os="Windows" arch="x86">
        <nativelib href="swt-4.2-win32-x86.jarx" />
    </resources>

Javaws尝试加载32位库,这意味着它无法识别arch =“x86_64”

所以我把第一行改为:

<resources os="Windows" arch="amd64">

但是javaws仍然试图加载32位文件。无论发生什么,我的操作系统的架构都没有被发现。

我在张贴之前已经拖了很多东西。有人说使用amd64,有人说使用x86_64,但都不起作用。找到详尽的OS / arch列表几乎是不可能的。

问题:如何从64位计算机请求时javaws加载64位二进制文​​件?

编辑:

我可以通过在jnlp文件中放入以下标记找到正确的文件:

<resources os="Windows" arch="x86\ ">

因此有一个以“x86”开头的arch值。但如果我把“x86 64”它不起作用。所以有一个空间,但空间之后是什么? Oracle是否发布了此字段的可接受值列表?

1 个答案:

答案 0 :(得分:1)

好吧,我认为自从我运行Windows 7 pro 64位以来我的JVM也是64位。不。您的浏览器第一次指向javaws应用程序时,它会为您安装JVM。安装的JVM取决于您的浏览器。 Windows 7 64位预装了IE 32位,这是javaws提取的32位lib。因此,乍看之下,关于架构选择正确的本机库的问题似乎已经解决了。仍有问题,但这不是其中之一。