我使用 CreateProcess(或 _spawnv())从 Windows VC++ 6 程序启动以下命令行(进程):

  • java -cp c:\dir\updates.jar;c:\dir\main.jar 主要

并且 update.jar 中的类更新(覆盖 main.jar 中的一些)不会被读取或找到。就好像无法找到或读取updates.jar 库。

如果我从快捷方式或从正确的命令行启动同一行,则所有内容都会找到并正确执行。

如果我从命令行启动 JVM,保持其运行,然后启动可执行存根(上面),那么一切也都可以正常工作。(这使得问题看起来像是文件权限问题)。

任何见解将不胜感激!

——爱德华

有帮助吗?

解决方案

尝试使用 Microsoft 的 FileMon 实用程序来弄清楚发生了什么。将包含过滤器设置为“更新”以关注问题。

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

其他提示

你在另一台机器上试过这个吗?另一个操作系统?您使用哪个 JVM?您尝试过不同的 JVM 吗?

您能为我们提供一个演示该问题的最小示例吗?

谢谢 杰数码!

我尝试了 FileMon,它告诉我我做错了什么。调用 CreateProcess() 的可执行文件具有更新 JAR 的未关闭文件句柄,这是由于之前尝试复制更新 JAR 造成的。错误的代码在生产环境中有效,但在测试环境中无效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top