0

我正在使用 NVIDIA 的 Visual Profiler (nvvp) 在 Pascal GPU 上分析内核(因为Nsight Compute 不支持这些内核) - 在 Devuan GNU/Linux 4 系统上使用 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。如果我使用不同的已安装 vm,例如/usr/lib/jvm/java-11-openjdk-amd64/bin/java,我会得到相同的错误。来自https://jdk.java.net/archive/的 Java 16 的 JDK 也不会改变任何事情。添加--illegal-access=permit有人向我建议的内容 - 也没有帮助。

4

1 回答 1

1

InaccessibleObjectException似乎是由于使用Java 17运行尚未为 Java 17 做好准备的 Java 代码造成的。Java 17比以前的 Java 版本更具限制性,在这一点上破坏了向后兼容性。此外,Java 16 比以前的版本更具限制性,并且在 Java 11 系统库中缺少 Java 8 中存在的包。

代替 Java 17,使用 Java 16 或 11运行基于最新 Eclipse 版本(--add-modules=ALL-SYSTEM包含在.ini文件中)的应用程序,使用Java 8运行基于旧 Eclipse 版本的应用程序。

.ini可执行文件(具有相同名称)旁边的文件中,您可以指定用于运行基于 Eclipse 的应用程序的 Java。或者,您可以将 Java 放在jre安装目录的子目录中。

此外,您可能会要求应用程序供应商提供带有嵌入式 Java 的应用程序。

更新Robert Crovella 参考了文档,根据该文档, Visual Profiler 需要 Java 8

于 2021-10-17T07:19:12.867 回答