Java 可以通过参数“强制64位JVM使用32位模式”-d32";?

Java 可以通过参数“强制64位JVM使用32位模式”-d32";?,java,deployment,32bit-64bit,Java,Deployment,32bit 64bit,因此,我有一些第三方本机库,只能在windows、osx、linux的32位JVM中运行,我需要始终强制java应用程序在32位JVM模式下运行 如果目标系统只安装了64位JVM,那么可以强制它以32位模式运行java应用程序吗 没有 您指定的先决条件禁止(好的,我禁止捆绑JVM解决方案并安装JVM解决方案)应用程序在32位JRE中运行。如果希望在32位JVM中运行应用程序,并且第三方本机库只能作为32位DLL使用,则必须使用32位JVM。64位JVM无法加载32位库;没有32位模式来加载这样的

因此,我有一些第三方本机库,只能在windows、osx、linux的32位JVM中运行,我需要始终强制java应用程序在32位JVM模式下运行

如果目标系统只安装了64位JVM,那么可以强制它以32位模式运行java应用程序吗

没有

您指定的先决条件禁止(好的,我禁止捆绑JVM解决方案并安装JVM解决方案)应用程序在32位JRE中运行。如果希望在32位JVM中运行应用程序,并且第三方本机库只能作为32位DLL使用,则必须使用32位JVM。64位JVM无法加载32位库;没有32位模式来加载这样的库

解决方案包括:

  • 要求安装32位JVM
  • 捆绑32位JVM(三个操作系统-这将是一个相当大的负担)
  • 为用户安装32位JVM
  • 使用其他第三方库/滚动您自己的库/查找64位版本的第三方库
可以通过参数强制64位JVM使用32位模式 “-d32”


由于
java
命令没有这样的参数,答案显然是“否”。

对于java 6,否。对于java 7+,是的


将-d32与Java 7一起使用

@MockerTim:Kim Jong-Woo说他的应用程序有一个原生的第三方库。这里讨论的不是Java字节码。IIRC,只有OS X Java版本支持
-d32
标志。您需要具体说明。这是Oracle JVM吗?作为旁注:讨论了一种可能性,即如果您计划部署到64位Java目标,您可能会感兴趣。有了两个JVM,一个32位和一个64位,您可以使用RMI/CORBA并在封装库的32位JVM上托管服务,并且您仍然可以为您的应用程序使用64位JVM,利用64位虚拟机的优势。因此我想这意味着我需要购买一个安装程序来捆绑所需的JVM。这是一种方法。如果用户的计算机上不存在JVM,您还可以使用安装程序从web为用户安装正确的JVM。还有其他方法吗?目标是捆绑32位JRE并使我的应用程序使用它。可能会以某种方式将32位JRE复制到我的应用程序的文件夹中,编写一个.bat或.bash文件来使用捆绑的JRE启动应用程序?对于Windows,是的,这非常简单。.cmd批处理文件看起来像“%~dp0jre\bin\javaw.exe”-jar“%~dp0app\main.jar”。这只适用于基于NT的现代版本的Windows。我一直试图在*nix中找到一个很好的解决方案,但我还没有找到。你错过了他说的“如果目标系统只安装了64位JVM,是否可以强制它以32位模式运行java应用程序?”的部分-d32仍然需要32位JRE。对于java 1.8(64位),我收到以下错误消息:
java-d32
错误:此java实例不支持32位JVM。请安装所需版本。
建议-d32/-d64选项仅在Solaris上有用;在Windows/Linux上,您需要安装适当的32位或64位JVM,并专门运行所需的JVM(例如,通过将其包含在系统路径中)。JDK 10我认为您不正确,因为此处记录了
-d32
-d64