我经历了从 https://www.graalvm.org/latest/tools/igv/ 设置 Ideal Graph Visualizer 的过程,并且我能够下载 mx 和 graal 存储库,但是当我尝试启动IGV 使用
mx -p graal/compiler igv
,它说文件名太长。我已经在注册表编辑器中将 LongPathsEnabled 设置为 1。
WARNING: symlinking not supported
Consider flag -J-Dsun.java2d.uiScale=2 if on a high resolution display
Consider flag -J-Xms4g -J-Xmx8g if dealing with large graphs
Error executing: C:\Users\drobi\.mx\cache\IDEALGRAPHVISUALIZER-0_31-0A82D7A0D60_DIST_20a3d87927fbecfe9b61dcd6c59f12f4c25e7da1ca926ea6d2571594424782751261e581e1c6e5113aeaeb8f31b8141b1941f7bbef1c6c07c55b9a753812b6db\idealgraphvisualizer-0-31-0a82d7a0d60-dist.extracted\idealgraphvisualizer\bin\idealgraphvisualizer.exe --jdkhome C:\Users\drobi\.jdks\graalvm-jdk-21.0.1+12.1 "-J-Dnetbeans.logger.console=false"
[WinError 206] The filename or extension is too long```
很明显,这是因为文件名太长,Windows 无法处理,这是因为
mx
将 IdealGraphVisualizer 下载到 ~\.mx\cache\IDEALGRAPHVISUALIZER-0_31-0A82D7A0D60_DIST_20a3d87927fbecfe9b61dcd6c59f12f4c25e7da1ca926ea6d2571594424782751261e581e1c6e5113aeaeb8f31b8141b1941f7bbef1c6c07c55b9a753812b6db
中 - 将目录附加到 .exe 文件后 - 路径长度超过 260。我尝试使用 ctypes
插入一些代码将路径转换为 Windows 可用的 ShortPath,这有效...
但是 IGV 的 .exe 文件(自然不能简单地编辑)使用它的路径(短格式)并使用它,向其中添加一个
.clusters
文件 - 短格式版本应该在哪里是.CLU
。这意味着生成的路径是非法的混合形式,因此程序崩溃。
因此,最简单的解决方法是更改缓存中的文件夹名称(例如,将其更改为
IDEALGRAPHVISUALIZER
)并编辑文件 run_netbeans_app
中第 67 行的 PATH_TO_GRAAL_DIRECTORY\graal\compiler\mx.compiler\mx_graal_tools.py
函数。第 75 行应从 extractPath = res.get_path(resolve=True)
更改为
if app_name == 'IdealGraphVisualizer':
extractPath = 'PATH_TO_MX\\.mx\\cache\\IDEALGRAPHVISUALIZER\\idealgraphvisualizer-0-31-0a82d7a0d60-dist.extracted'
else:
extractPath = res.get_path(resolve=True)
在我的系统上,这工作完美,并且可以快速实现 - 无需追逐 mx.py 文件/函数。
PATH_TO_GRAAL_DIRECTORY
将是您最初称为 git clone https://github.com/oracle/graal.git
的目录(可能与 mx
所在的目录相同)。