【问题标题】:Need help running visualvm on Windows when under VMWare在 VMWare 下在 Windows 上运行 visualvm 需要帮助
【发布时间】:2011-09-09 14:58:41
【问题描述】:

我正在 VMWare Fusion 3.x (OSX) 内运行的 Windows 7 x64 上进行一些 Java 开发。我已经安装了 JDK6(更新 26),将 JAVA_HOME 设置为路径(没有尾部斜杠),然后重新启动了我的命令提示符。

我可以成功启动程序。在启动期间,它会运行校准,然后失败并出现以下错误:

“无法创建目录\VMWare-host\Shared Folders\.nbprofiler”(斜线后没有空格,但标记隐藏了句点)

我可以单击继续,但是当我在程序中时,我无法进行 CPU 或内存分析。我抛出了一个类似的错误框:

“为目标 JVM 检索保存的校准数据时出错:无法创建...(与之前相同)”

曾几何时,我通过在启动期间传递 --userdir 标志和 -J-Dnbprofiler.home 来实现此功能,但该技巧不再有效。

(完整的命令是: jvisualvm --userdir c:\Users\myname -J-Dnbprofiler.home=c:\Users\myname )

如何强制 jvisualvm 将其校准数据保存在“真实”驱动器而不是 vmware 网络驱动器上并使其正常工作?

【问题讨论】:

    标签: java jvm visualvm jvisualvm


    【解决方案1】:

    .nbprofiler 目录源自 user.home 系统属性。我不确定您对 Windows 安装做了什么,但您的 user.home 指向 directory\VMWare-host\Shared Folders。因此,一种解决方案是修复 Windows 安装,以便 Java 将 c:\Users\myname 识别为您的用户主目录。如果由于某种原因失败,您可以使用 nbprofiler.home 属性覆盖它,正如您正确编写的那样。但是,您应该将其指向不存在的目录,因此您应该使用以下命令行启动 VisualVM:

    jvisualvm -J-Dnbprofiler.home=c:\Users\myname\nbprofiler --userdir c:\Users\myname\visualvm_userdir 
    

    最后一点,即使分析器部分不起作用,您也应该能够在“采样器”选项卡中使用采样。

    【讨论】:

    • 太棒了,成功了!顺便说一句,我在安装 Windows 时没有做任何特别的事情,所以我不知道 user.home 如何或为什么没有指向正确的位置。我假设这是 VMWare 正在做的一些幕后花絮。
    • Java 使用 Windows 注册表和 shell32.dll API 来获取用户的主目录。我实际上它寻找桌面文件夹并使用父目录作为主目录。您的“桌面”文件夹在哪里?
    • 那将是问题所在。 Java 没有考虑 Windows 文件夹重定向功能。 VMWare 使您能够通过文件夹重定向功能同步重要的用户文件夹,这意味着所有内容都映射到这些关键文件夹的主机系统。因此桌面被映射到上述文件夹作为子文件夹,因此它的父级是错误的。感谢 Tomas,这解决了我遇到的另一个问题,以及我正在处理的一些 Java 应用程序,这些应用程序在启用文件夹重定向时同样会感到困惑。
    【解决方案2】:

    尝试禁用虚拟机的共享。

    它适用于我在 Fusion 中禁用共享的 Windows 7 x86(共享是提供您无法写入的文件夹的机制)。

    【讨论】:

    • 不可行。 VM 映像的磁盘空间非常小,因此它需要共享驱动器才能访问我正在运行的代码、程序的数据等。
    • 那我建议你看一下VisualVM的源代码,找出它认为共享驱动器可用的原因。
    【解决方案3】:

    我发现以下命令对我有用。

    visualvm -J-Duser.home=%HOME%

    另外,我需要将 -Duser.home=%HOME% 添加到我的应用启动命令中。

    我已经定义了 nbprofile.home 和 userdir,但是当 Profiler 对我的应用程序运行时我仍然收到错误:Profiler 代理错误:无法创建目录\vmware-host\Shared Folders.nbprofiler强>。

    我发现 Profiler 使用的是我的应用程序定义的 user.home,而不是使用 visualvm 的。两者似乎都需要。

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 2011-07-10
      • 2011-06-23
      • 2014-11-04
      • 1970-01-01
      • 2022-08-21
      相关资源
      最近更新 更多