我能否在64位Java中使用runtime.exec()运行32位批处理文件?

5
我们正在将服务器从32位的Windows 2003升级到64位的Windows 2008,我在选择升级后的服务器应用程序的32位和64位版本之前进行了一些尽职调查。
我们目前有一个Tomcat服务器,其中有许多Web应用程序,它们使用Runtime.getRuntime().exec()启动Perl脚本(在Windows批处理文件中)。然后,Perl脚本启动MS Office来创建和操作对象。
根据我的阅读,大多数人(包括Microsoft)建议安装32位Office,除非您有非常好的理由安装64位版本(而此时,我认为我们没有)。
看起来这可能意味着我必须运行32位Perl才能创建32位Office对象。
问题是,这是否也意味着我需要在32位Java上运行Tomcat?如果是这样,我有第二个问题,那就是我是否可以在不同的JVM中安装多个Tomcat实例,以利用64位OS中的额外内存?
如果可能从64位Java中启动32位进程,是否有任何特殊技巧,或者只需在cmd命令的路径中指定WOW64即可?

1
你可以在64位环境中启动32位进程,但正如你所提到的,可能无法使用额外的内存。你可以使用Runtime.getRuntime().exec()来运行32位或64位应用程序,在64位Windows中运行32位进程将在任务管理器中其名称后面带有*32。 - Anantha Sharma
您不一定需要运行32位Perl。我认为64位Perl应该能够完美地操作32位版本的Office,可能甚至不需要对代码进行任何更改。 - Harry Johnston
Harry,这是我正在尝试找出的事情之一。我看到过一些人遇到了问题,当他们卸载了64位Perl并安装了32位Perl时,问题得到了解决。如果我们能够在64位中使所有东西都正常工作,那可能更好,这就是为什么我问起在64位Java中启动32位进程的事情(也就是说,如果可能的话,我想运行64位Java,即使我不能运行64位Office或64位Perl)。 - Rebeccah
谢谢,阿南塔。我的主要担忧不是单个批处理文件/Perl脚本的内存限制,而是Tomcat将同时运行几个,因此它们的聚合内存使用量可能超过32位限制。 - Rebeccah
1个回答

0

执行文档指出

(...) 启动操作系统进程高度依赖于系统。 (...)

因此,人们会认为从64位Java进程启动32位进程是完全可能的,因为在Windows上启动另一个进程根本不关心位数。

如果您启动SysWOW64\cmd.exe,则应该完全正常。

您正在运行哪个Perl发行版? Strawberry Portable ZIP版本可以并排使用,无需安装任何内容。


谢谢,马丁。我们当前正在使用ActivePerl 5.8.8。我也在尝试决定是否升级到更高版本,但这是另一个主题的问题。 :-) - Rebeccah
是的,我也卡在了 ASP 5.8.8 上,但在我的情况下转换到草莓 5.10 相当简单(但我还没有全部转换)。好消息是,即使安装了 ASP 5.8,您仍然可以使用草莓便携版,因为所有 Perl 都依赖于正确的路径设置,这些对于便携式启动器脚本来说非常容易修复。 - Martin Ba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接