通过CreateProcess()启动的JVM丢失了类路径库

时间:2008-11-10 19:04:35

标签: java windows process jvm classpath

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

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

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

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

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

非常感谢任何见解!

- 爱德华

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你有没有在另一台机器上试过这个?另一个OS?您使用的是哪个JVM?你尝试过不同的JVM吗?

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

答案 2 :(得分:0)

谢谢 jdigital

我尝试过FileMon,它向我展示了我做错了什么。调用CreateProcess()的可执行文件有一个未封闭的文件句柄,来自updates.jar,试图先复制更新JAR。在生产环境中有效但在测试环境中无效的错误代码。