2010-08-22 95 views
4

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

例如,我有

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

的someExecutable二进制是在64位,并使用这个码具有32位Java库似乎不工作。 我对这个问题的解决方法是使用32位java库(因为我的环境是32位)导出try.jar并使用客户端站点中的64位库运行try.jar。 此方法是否正确或有其他建议?

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

+1

你得到了什么确切的错误? – clamp 2010-08-22 09:31:13

+0

当我运行一些64位的客户端网站时,我可以正常工作(客户端站点也是64位)。 但是当我使用s = rt.exec(“someExecutable”);它不起作用。 java库(通过java.sun.com下载的jre可执行文件)现在在客户端和开发站点都是32位。 如果我安装64位库到客户端网站但不在开发网站上,解决我的问题吗? – ogzylz 2010-08-22 09:41:50

回答

2

您将需要一个someExecutable二进制文件在您希望运行程序的操作系统体系结构上可用。

这实际上与Java没有任何关系 - 所有Java正在执行的操作是转到底层操作系统并尝试在传递到Runtime.exec()的字符串中运行该命令。

+0

但是当我在终端中运行一些可执行文件时,它工作正常。但使用Runtime.exec(“someExecutable”)不工作? 我认为问题是,java库32位&someExecutable是64位??我可能是错误的.. – ogzylz 2010-08-22 09:53:49

+0

32位和64位不应该是一个问题在这里...我想你是混淆这个思路的问题。你可以显示你的错误或堆栈跟踪或类似的东西? – 2010-08-22 09:56:52

+0

输入流没有提供任何内容。\ n someExecutable is drecog -i ...(一些其他参数)\ n 错误流给出了drecog手册\ n 当终端中的“./drecog”它也给出了drecog手册 – ogzylz 2010-08-22 10:01:04

0

如果你使用100%的java代码,你会得到什么问题?如果你使用100%的java代码,JRE应该透露所有其他的东西。

4

Java librairies在这里不是问题。如果你想exec someExecutable,这个程序必须在32位的32位环境。

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

+0

您可以从32个Java环境(假设操作系统支持64位)启动64位程序。除了字节码外,Java库还可能包含本机代码。 – 2010-08-22 09:42:48

+0

我想到了这一点,但在这种情况下,并与此问题,我严重怀疑问题驻留在本机代码。 – 2010-08-22 09:44:52

+0

我解决了这个问题。这与32/64位问题无关,对于混淆感到抱歉。从32个Java环境启动64位程序是很好的。问题是Runtime.exec(“drecog -i ...> rec.log”); “> rec.log”导致了这个问题。当我删除那部分它工作得很好。我不知道为什么“> rec.log”部分导致问题。 – ogzylz 2010-08-22 10:26:51

相关问题