Ubuntu系统中CUDA套件nvvp启动后报错Unable to make protected void java.net.URLClassLoader.addURL(java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @380fb434
最近在看cuda方面的内容,需要对cuda代码做一些性能分析,于是需要使用nvvp,但是启动nvvp后报错: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 @380fb434
详细报错信息:
(base) devil@hp:/tmp$ 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.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:577)
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 @380fb434
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:200)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:194)
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)
... 12 more
经过在网上Google后找到问题点在于java的jre环境过高,外网上的解决方法一般是将jre环境降到版本8,于是这里的查看本机java版本:
java --version
卸载系统中默认的java环境:
sudo apt remove java-common
重点提醒:
需要注意的是这里卸载的是系统环境下的java,因为本机并没有任何依赖系统路径下java环境的应用,因此就直接对系统路径下的java环境进行卸载和重安装,但是如果你的系统中有一些对系统路径下java环境依赖较强的开发任务就不要采取该方式,比如在开发中的java web任务,hadoop任务,Android任务等等。因为cuda套件nvvp对gcc和java的路径读取并不是优先读取系统路径下的,而是优先读取自身路径下的,比如本机cuda的安装路径为/usr/local/cuda-11.3,那么nvvp的安装路径为/usr/local/cuda-11.3/libnvvp,因此nvvp优先读取自身路径下的java路径为/usr/local/cuda-11.3/libnvvp/jre/bin/java,也就是说你可以在系统中手动安装java8的jre到用户空间下,然后在为路径/usr/local/cuda-11.3/libnvvp/jre/bin/java设置软链接到用户空间下的java,这里就不做这方面的演示了。
本机解决方法为:
在系统路径下安装java8:
sudo apt install openjdk-8-jre-headless
==================================================
参考:
https://github.com/lucko/helper/issues/98
相关文章
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到Ubuntu 16.04
- spring boot: java @interface注解
- Java实现 LeetCode 594 最长和谐子序列(滑动窗口)
- Java实现 LeetCode 480 滑动窗口中位数
- Java实现 LeetCode 66 加一
- java实现第六届蓝桥杯隔行变色
- Java实现运动员分组
- Java实现快速排序
- Java实现 蓝桥杯 算法提高 周期字串
- (转载)java多态(2)-------Java转型(向上或向下转型)
- java与.net平台之间进行RSA加密验证
- linux系统部署Java程序获取ip时报Caused by: java.net.UnknownHostException: XXXXXXXXXX: XXXXXXXXXX: Name or service not known
- Eclipse 报 “Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”错误的解决办法
- [工具] 将Sublime Text 3配置为Java代码编辑器
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++
- atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- 华为OD机试 - 最优高铁城市修建方案(Java & JS & Python)
- 华为OD机试 - We Are A Team(Java & JS & Python)
- 你的NET程序需要保护吗?Agile.net 6.6.X 注入式Crack
- JAVA接口中不可以有静态方法吗
- java变量使用的注意事项
- java-信息安全(十二)-数字证书、CA证书【Java证书体系实现】
- java - 详解 Java 17 中新推出的密封类
- FinallShell连接Ubuntu报错:java.net.ConnectException: Connection refused: connect
- JAVA开发讲义(二)-Java程序设计之数据之谜一