通过 CreateProcess() 启动的 JVM 丢失类路径库
题
我使用 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 造成的。错误的代码在生产环境中有效,但在测试环境中无效。
不隶属于 StackOverflow