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

javaws总是加载32位库,即使客户端是64位的,java,windows,64-bit,java-web-start,jnlp,Java,Windows,64 Bit,Java Web Start,Jnlp,我有一个传递JaNeLa的jnlp文件,所以它没有错误。web start应用程序在Linux和Windows 32位上运行良好。它无法在Windows 64位上运行。我设计了以下测试来确定javaws是否加载了正确的本机库: 将jnlp文件中库文件的名称更改为不存在的文件 加载应用程序以强制执行“未找到文件”错误,以查看它尝试加载的文件 这是jnlp存根(文件的其余部分很好…相信我): Javaws尝试加载32位库,这意味着它无法识别arch=“x86_64” 因此,我将第一行更改为:

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

  • 将jnlp文件中库文件的名称更改为不存在的文件
  • 加载应用程序以强制执行“未找到文件”错误,以查看它尝试加载的文件
这是jnlp存根(文件的其余部分很好…相信我):


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

因此,我将第一行更改为:


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

我在发帖之前已经搜罗了很多。有人说使用amd64,也有人说使用x86_64,但两者都不起作用。几乎不可能找到详尽的OS/arch列表

问题:当从64位机器请求时,如何让javaws加载64位二进制文件

编辑:

我可以通过在jnlp文件中放置以下标记来定位正确的文件:



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

好的,我假设因为我运行的是64位windows 7 pro,所以我的JVM也是64位的。不当浏览器第一次指向javaws应用程序时,它会为您安装JVM。安装的JVM取决于您的浏览器。Windows 7 64位预装了IE 32位,即javaws获取32位库。因此,乍一看,选择与体系结构相关的正确本地库的问题似乎已经解决。仍然存在问题,但这不是问题之一。

当指向该机器时,可以看到
os.arch
的值是多少?我在64位机器上运行32位JRE,请参见
os.arch x86
。到目前为止,对于32位JVM,我只遇到了“x86”,对于64位JVM,遇到了“amd64”和“x86_64”。(请注意下划线。)空格用于分隔不同的选项,因此实际上arch=“amd64 x86_64”应该匹配所有64位JVM,但在我的情况下,这不起作用。。。我不知道为什么,给我留下了两个resources元素,一个带有arch=“amd64”,另一个带有arch=“x86_64”,没有os属性。