【问题标题】:JVM Launched via CreateProcess() Loses Classpath Library通过 CreateProcess() 启动的 JVM 丢失了类路径库
【发布时间】:2008-11-10 19:04:35
【问题描述】:

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

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

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

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

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

任何见解将不胜感激!

--爱德华

【问题讨论】:

    标签: java windows process jvm classpath


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      您能否为我们提供一个说明问题的最小示例?

      【讨论】:

        【解决方案3】:

        谢谢jdigital

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

        【讨论】:

          猜你喜欢
          • 2011-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-26
          • 1970-01-01
          • 2010-09-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多