【问题标题】:How to start 64-bit Java application from 32-bit C++ application?如何从 32 位 C++ 应用程序启动 64 位 Java 应用程序?
【发布时间】:2022-02-02 02:14:48
【问题描述】:

我正在使用一个简单的 C++ 程序在 Windows 7 64 位中运行一个可执行的 .jar 文件。我希望它执行 64 位 java,但它没有,它执行 32 位版本。

我正在使用以下代码:

const char* javaw_path     = "javaw.exe";
const std::string memory   = "-Xmx" + user_configured_memory();
const char* jar            = "-jar";
const char* jar_file       = "\"HelloWorld.jar\"";
const std::string cli_args =  get_cli_args(argc, argv);

const char* args[] = {javaw_path, memory.c_str(),
       jar, jar_file, cli_args.c_str(), static_cast<char*>(NULL)};    

const int ret = execvp(javaw_path, args);

当 java 应用程序启动时,它会将机器架构记录为“x86”,而不是预期的“amd64”。我通过检查获得此信息:

System.getProperty("os.arch")

当我从命令提示符运行相同的命令时,一切都会按预期运行 - java 应用程序会记录“amd64”。

如何更改我的启动程序以启动 64 位 java?

【问题讨论】:

  • 可能是您的路径不同吗?你自己的PATH包含java 64bit dir,而32bit app继承PATH包含java 32bit dir,所以它先找到32bit javaw.exe,然后执行?
  • 您能否尝试明确说明您要运行哪个 javaw.exe,例如C:\\Program Files\\Java\\jdk1.7.0\\bin\\javaw.exe

标签: java c++ 32bit-64bit windows-7-x64


【解决方案1】:

我们可以有操作系统、JDK 和 Eclipse 位的组合,例如 64 位 JDK 和 64 位操作系统上的 32 位 Eclipse,或 32 位操作系统、32 位 JDK、32位 Eclipse、64 位操作系统、32 位 JDK、32 位 Eclipse,或 64 位操作系统、64 位 JDK、64 位 Eclipse。正如上面有人提到的,如果你在 32 位上用 C++ 编写的程序无法编译,则必须在 64 位上完成,当然还有另一个 64 位应用程序才能运行 exe。

【讨论】:

    【解决方案2】:

    如果你的 C++ 程序是 32 位的,你就不能这样做。您必须将 C++ 应用程序编译为 64 位,然后才能从可执行文件中调用另一个 64 位应用程序。

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2013-01-04
      • 2013-04-11
      • 2010-12-18
      相关资源
      最近更新 更多