【问题标题】:Can I runtime.exec() a 32-bit batch file from 64-bit Java?我可以从 64 位 Java 运行 runtime.exec() 一个 32 位批处理文件吗?
【发布时间】:2014-08-06 23:27:06
【问题描述】:

我们正在将我们的服务器从 32 位 Windows 2003 升级到 64 位 Windows 2008,在我们选择 32 位和 64 位版本的升级服务器应用程序之前,我正在做一些尽职调查.

我们目前有一个 Tomcat 服务器,其中包含许多使用 Runtime.getRuntime().exec() 启动 perl 脚本(在 Windows 批处理文件中)的 Web 应用程序。 perl 脚本反过来启动 MS Office 以创建和操作对象。

据我所知,大多数人(包括 Microsoft)建议安装 32 位 Office,除非您有充分的理由安装 64 位版本(在这一点上,我不认为我们做)。

看起来这可能意味着我必须运行 32 位 Perl 才能创建 32 位 Office 对象。

问题是,这是否也意味着我需要在 32 位 Java 上运行 Tomcat?如果是这样,我还有第二个问题,我是否可以在不同的 JVM 中安装多个 Tomcat 实例,以利用 64 位操作系统中的额外内存?

如果可以从 64 位 Java 中启动 32 位进程,是否有什么特殊技巧,或者仅在 cmd 命令的路径中指定 WOW64 就足够了?

【问题讨论】:

  • 您可以在 64 位环境中启动 32 位进程,但正如您所提到的,您可能无法使用额外的内存,您可以使用 Runtime.getRuntime().exec() 运行 32 位或 64 位应用程序,64 位 Windows 中的 32 位进程在任务管理器中将有一个 *32 反对它的名称..
  • 您不一定需要运行 32 位 Perl。我希望 64 位 Perl 能够完美地操作 32 位版本的 Office,甚至可能不需要对代码进行任何更改。
  • Harry,这是我想要找出的一件事。我见过一些人的帖子,他们在卸载 64 位 Perl 并安装 32 位时遇到了问题并且问题得到了解决。如果我们能够设法让一切都在 64 位上运行,那么这可能是更可取的,这就是为什么我要从 64 位 java 中启动 32 位进程(也就是说,我想运行 64 位尽可能使用 Java,即使我无法运行 64 位 Office 或 64 位 Perl)。
  • 谢谢,阿南莎。我主要关心的不是单个批处理文件/perl 脚本的内存限制,而是 Tomcat 将同时运行其中几个脚本的事实,因此它们的总内存使用量可能会超过 32 位限制。

标签: java windows tomcat batch-file 32bit-64bit


【解决方案1】:

exec docs 状态

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

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

如果你启动SysWOW64\cmd.exe,你应该完全没问题。

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

【讨论】:

  • 谢谢,马丁。我们目前使用的是 ActivePerl 5.8.8。我也在尝试决定是否升级到更新的版本,但这是另一个线程的问题。 :-)
  • 是的,我也被困在ASP 5.8.8 上,在我的情况下转换为草莓 5.10 非常简单(但我还没有全部转换)。好消息是,即使安装了 ASP 5.8,您仍然可以使用 Strawberry 便携版,因为所有 perl 都依赖于正确的路径设置,并且这些对于便携启动器脚本来说是微不足道的。
猜你喜欢
  • 1970-01-01
  • 2013-11-24
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2011-04-05
相关资源
最近更新 更多