NVIDIA可视档案器在启动时崩溃

nwnhqdif  于 2022-10-15  发布在  Eclipse
关注(0)|答案(1)|浏览(221)

我正在使用NVIDIA的可视化分析器(Nvvp)来分析Pascal GPU上的内核(就像那些aren't supported by Nsight Compute一样)--在Devuan GNU/Linux4系统上使用CUDA 11.4。
当我运行nvvp时,它立即崩溃,并说:

$ nvvp
java.lang.ExceptionInInitializerError
    at org.eclipse.osgi.storage.Storage.<init>(Storage.java:97)
    at org.eclipse.osgi.storage.Storage.createStorage(Storage.java:84)
    at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:75)
    at org.eclipse.osgi.launch.Equinox.<init>(Equinox.java:31)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:295)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:231)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.net.URLClassLoader.addURL(java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @21bcffb5
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    at org.eclipse.osgi.storage.FrameworkExtensionInstaller.findMethod(FrameworkExtensionInstaller.java:52)
    at org.eclipse.osgi.storage.FrameworkExtensionInstaller.findMethod(FrameworkExtensionInstaller.java:59)
    at org.eclipse.osgi.storage.FrameworkExtensionInstaller.findAddURLMethod(FrameworkExtensionInstaller.java:43)
    at org.eclipse.osgi.storage.FrameworkExtensionInstaller.<clinit>(FrameworkExtensionInstaller.java:37)
    ... 14 more

为什么会发生这种情况,以及我如何规避/修复此错误?

**编辑:**在我的系统中,默认的Java VM是:OpenJDK 17-EA 2021-09-14。如果我使用其他已安装的虚拟机,例如/usr/lib/jvm/java-11-openjdk-amd64/bin/java,我会收到相同的错误。来自https://jdk.java.net/archive/ for Java 16的JDK也不会改变事情。添加有人向我建议的--illegal-access=permit也无济于事。

xxslljrj

xxslljrj1#

InaccessibleObjectException似乎是由于使用Java 17运行尚未为Java 17做好准备的Java代码造成的。Java 17比以前的Java版本更具限制性,在这一点上破坏了向后兼容性。此外,Java 16比以前的版本更严格,在Java 11系统库中,缺少了Java 8中存在的包。
与Java 17不同,使用Java 16或11来运行基于最新的Eclipse版本(.ini文件中包含--add-modules=ALL-SYSTEM)的应用程序,并使用Java 8来运行基于较旧的Eclipse版本的应用程序。
在可执行文件(同名)旁边的.ini文件中,您可以指定用于运行基于Eclipse的应用程序的Java。或者,您可以将Java放在安装目录的jre子目录中。
此外,您可以要求应用程序的供应商将应用程序附带嵌入式Java。

更新:Robert Crovella参考文档,文档中提到​可视Profiler需要使用JAVA 8

相关问题