gpt4 book ai didi

Java SxS(并排)配置

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:57 24 4
gpt4 key购买 nike

当我尝试在 Windows 中并排 (SxS) 运行 Java 应用程序时,我遇到了一个非常模糊的问题。

我已经完成了创建 java.exe.config 和 java.exe.manifest 文件的所有准备工作,它们与 JRE 位于同一文件夹中。

当我从命令行(通过启动 .bat 文件)调用它时,应用程序运行正常。 .bat 文件使用 SxS 配置的 Java(这是我运行应用程序的框中唯一的一个)

但是,当我尝试从另一个 Java 进程(使用 Runtime.getRuntime.exec() )或 ProcessBuilder 调用它时它似乎完全忽略了 SxS 配置,并且子 Java 进程提示它找不到 COM 库,这就是我必须执行 SxS 的原因。我必须补充一点,父 Java 进程也由为 SxS 配置的 Java.exe 启动。因此,我假设“Runtime.getRuntime(), ProcessBuilder()”会给我 Java SxS 加载环境。

使用一些 Windows 工具(procexp.exe、procmon.exe)做一些进一步的调试,我发现了以下内容:当我从 .bat 文件启动应用程序时,.manifest 文件通常由 crss.exe 读取(因为它应该是)。但是,当 Java 生成另一个进程时,根本不会考虑 .manifest 文件。我能想到的一个可能的问题是启动该进程的 Java.exe 的当前目录与 java.exe.manifest 文件所在的目录不同。

我唯一能想到的是 java 启动器中的错误/问题(或者他们称之为功能)。

有没有人遇到过类似的问题?任何人都可以阐明以上内容吗?非常感谢。

到目前为止,我已经尝试了以下方法:

  • 从 .bat 文件中运行 java 进程。 工作
  • 使用 Runtime.getRuntime().exec(). <b>DID NOT WORK</b> 从父 Java 进程调用了 java 进程

  • Invoked the .bat file from a parent Java process using Runtime.getRuntime().exec() . 没用
  • 使用 ProcessBuilder 设置 .manifest 文件所在的当前目录。 没用

最佳答案

我在我的电脑上测试过它,它可以工作。尝试:

  • 从 Runtime.getRuntime().exec(...) 读取 getErrorStream();并发送到这里,如果你不能解决这个问题,
  • 使用完整路径 (C:\Program...) 运行进程,
  • 将java程序编译为.jar,用.bat放入文件夹,打开CMD,将当前目录设置为该文件夹并运行jar文件(使用java -jar filename.jar),

关于Java SxS(并排)配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18823225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com