2011-12-04 48 views
11

所以我有隻適用於在Windows,OSX,Linux的32位JVM一些第三方本地庫,我需要一直執行的Java應用程序在32位JVM方式運行。可能強制64位JVM通過參數「-d32」使用32位模式?

那麼如果目標系統只安裝了64位JVM,纔有可能迫使它在運行32位模式的java應用程序?

+0

@MockerTim:金正雨說,他的應用程序有一個天然的第三方庫。這不是這裏討論的Java字節碼。 – user314104

+0

IIRC,只有OS X Java版本支持'-d32'標誌。 – Mot

+0

你需要具體。這是Oracle JVM嗎? –

回答

11

您指定禁止的前提條件(好吧,我排除了捆在JVM的解決方案和安裝最JVM溶液)號從32位JRE運行的應用程序。如果要在32位JVM中運行應用程序,並且第三方本機庫僅作爲32位DLL提供,則必須使用32位JVM。 64位JVM無法加載32位庫;沒有32位模式來加載這樣的庫。

解決方案包括:

  • 需要32位JVM要安裝
  • 捆綁32位JVM(三OS的 - 那將是一個相當大的負擔)
  • 安裝32位JVM用戶
  • 使用不同的第三方庫/滾你自己/找到一個64位的第三方庫的版本
+2

作爲一個方面說明:http://stackoverflow.com/a/2925549/314104討論,如果你打算部署到64位Java目標反正你可能會發現有趣的可能性。有兩個JVM中,一個32位和一個64位的,則可以使用RMI/CORBA和32位JVM封裝了圖書館舉辦一個服務,你仍然可以使用64位JVM的應用程序,繪圖64位虛擬機的好處。 – user314104

+0

所以我想這意味着我需要購買一個將捆綁所需JVM的安裝程序。 – KJW

+1

這是一種可以接受的方法。如果用戶計算機上不存在JVM,也可以使用安裝程序爲Web用戶安裝正確的JVM。 – user314104

1

possible to force a 64-bit JVM to use 32-bit mode via the argument 「-d32」?

由於不存在這樣的參數給java命令,答案是明顯爲「否」。

+0

我不認爲你是正確的,因爲'-d32'和'-d64'都記錄在這裏:http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java。html – rozky

11

在Java 6,沒有。對於Java 7+,是的。

-d32使用與Java 7

+0

您錯過了他所說的「如果目標系統只安裝了64位JVM,是否有可能強制它以32位模式運行Java應用程序?」。 -d32仍然需要32位JRE。 – user314104

+0

使用java 1.8(64位)我收到以下錯誤消息: 'java -d32' '錯誤:此Java實例不支持32位JVM。 請安裝所需版本.' –

+0

[此Oracle常見問題](http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#64bit_layering)表明-d32/-d64選項僅在Solaris上有用;在Windows/Linux上,您需要安裝合適的32位或64位JVM,並專門運行您想要的(例如,將其包含在系統路徑中)。 –