【问题标题】:can 32 bit exported jar file be executed using 64 bit java libraries?可以使用 64 位 java 库执行 32 位导出的 jar 文件吗?
【发布时间】:2011-04-02 05:44:29
【问题描述】:

我使用 32 位 java 库导出 try.jar 文件。在客户端站点上,我有 64 位 Java 库。 try.jar 可以运行 64 位可执行文件吗?

例如,我有

Runtime rt = Runtime.getRuntime();
s = rt.exec("someExecutable");

someExecutable 二进制文件是 64 位的,并且将此代码与 32 位 java 库一起使用似乎无法正常工作。 我对这个问题的解决方案是使用 32 位 Java 库导出 try.jar(因为我的环境是 32 位)并在客户端站点中使用 64 位库运行 try.jar。 这种方法是否正确或有任何其他建议?

当我在客户端站点上直接运行 64 位的 someExecutable(不涉及 java)时它工作正常(客户端站点也是 64 位。)。 但是当我使用 s = rt.exec("someExecutable");它不起作用。 Java 库(通过 java.sun.com 下载的 jre 可执行文件)现在在客户端和开发站点都是 32 位的。 如果我将 64 位库安装到客户端站点而不是开发站点上,我的问题会解决吗??

【问题讨论】:

  • 您得到的确切错误是什么?
  • 当我在客户端站点上运行 64 位的 someExecutable 时,我工作正常(客户端站点也是 64 位的。)。但是当我使用 s = rt.exec("someExecutable");它不起作用。 Java 库(通过 java.sun.com 下载的 jre 可执行文件)现在在客户端和开发站点都是 32 位的。如果我将 64 位库安装到客户端站点而不是开发站点上,我的问题会解决吗??

标签: java process 64-bit 32-bit


【解决方案1】:

Java 库不是这里的问题。如果你想execsomeExecutable,这个程序必须是32位的32位环境。

Java 库不是 32 位或 64 位的,它们采用 Java ByteCode。因此它们可以以完全相同的方式在任何 JVM 64 或 32 上执行。

【讨论】:

  • 您可以从 32 位 Java 环境启动 64 位程序(假设操作系统支持 64 位)。除字节码外,Java 库还可能包含本机代码。
  • 我想到了这一点,但在这种情况下和这个问题上,我严重怀疑问题是否存在于本机代码上。
  • 我解决了这个问题。它与 32/64 位问题无关,很抱歉造成混淆。从 32 位 Java 环境启动 64 位程序很好。问题是 Runtime.exec("drecog -i ... > rec.log"); "> rec.log" 导致了问题。当我删除该部分时,它工作正常。我不知道为什么 "> rec.log" 部分会导致问题。
【解决方案2】:

您需要在您希望运行程序的操作系统架构上提供一个someExecutable 二进制文件。

这实际上与 Java 无关 - Java 所做的只是转到底层操作系统并尝试在您传递给 Runtime.exec() 的字符串中运行命令。

【讨论】:

  • 但是当我在终端中运行 someExecutable 时它工作正常。但是使用 Runtime.exec("someExecutable") 不起作用?我认为问题在于 java libs 32 位和 someExecutable 是 64 位的?我可能错了..
  • 32 位与 64 位在这里不应该成为问题......我认为你用这种思路混淆了问题。你能显示你的错误或堆栈跟踪或类似的东西吗?
  • 输入流什么也没给出。\n someExecutable 是 drecog -i ...(一些其他参数)\n 错误流给出了 drecog 的手册 \n 当终端中的“./drecog”给出手册时drecog 以及
  • 我解决了这个问题。它与 32/64 位问题无关,很抱歉造成混淆。从 32 位 Java 环境启动 64 位程序很好。问题是 Runtime.exec("drecog -i ... > rec.log"); "> rec.log" 导致了问题。当我删除该部分时,它工作正常。我不知道为什么 "> rec.log" 部分会导致问题。
  • @ogzylz - 这是因为重定向是由命令解释器(即 shell)执行的,而您没有启动其中之一。例如:stackoverflow.com/questions/3130787/…
【解决方案3】:

这样做有什么问题?如果你使用 100% java 代码,JRE 应该透明所有其他的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2011-10-09
    • 2014-08-06
    • 2011-11-01
    • 2013-11-24
    • 2023-04-02
    • 2020-09-16
    • 2011-06-23
    相关资源
    最近更新 更多