2013-08-26 61 views
0

我有一個jnlp文件可以通過JaNeLa,所以它沒有錯誤。網絡啓動應用程序在Linux和Windows 32位上運行良好。它無法在Windows 64位上運行。我設計了以下測試,以確定是否javaws的加載正確的本地庫:即使客戶端是64位,javaws也會加載32位庫

  • 變化在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的嘗試LO廣告的32位庫,這意味着它不承認拱=「x86_64的」

所以我改變了第一行:

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

但仍javaws的嘗試加載32位文件。不管發生了什麼,我的操作系統的體系結構都沒有被檢測到。

我發佈之前已經搜尋了很多東西。有人說使用amd64,有人說使用x86_64但都不行。幾乎不可能找到詳盡的OS/Arch列表。

問題:如何讓javaws在64位機器請求時加載64位二進制文​​件?

編輯:

我可以找到通過將以下標記在JNLP文件正確的文件:

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

因此,有一個拱形的值以「86」開頭。但如果我把「x86 64」,它不起作用。所以有一個空間,但空間之後是什麼?而不是Oracle公佈這個字段的可接受值列表?

+0

當該機器指向[本頁](http://pscode.org/prop/?prop=os.arch&format=TSV)時,看到'os.arch'的值是什麼?我在64位機器上運行32位JRE並查看'os.arch \t x86'。在頂部的文本區域。 –

+0

到目前爲止,我只遇到了32位的「x86」和64位JVM的「amd64」和「x86_64」。 (注意下劃線。)空格用於分隔不同的選項,所以實際上arch =「amd64 x86_64」應該匹配所有的64位JVM,但這對我來說不起作用......我不知道爲什麼,離開我有兩個資源元素,一個是arch =「amd64」,另一個是arch =「x86_64」,沒有os屬性。 –

回答

1

好的,我認爲自從我運行Windows 7專業版64位,我的JVM也是64位。不。您的瀏覽器第一次指向javaws應用程序時,它會爲您安裝JVM。並且安裝的JVM取決於您的瀏覽器。 Windows 7 64位預裝了IE 32位,這是javaws獲取的32位lib。因此,乍看之下,關於架構選擇正確的本地庫的問題似乎已經解決了。仍然存在問題,但這不是其中之一。

相關問題