统信UOS下启动图形界面应用工具monitor报JAVA相关错:An error has occurred. See the log file
☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython
一、前言
在博文《基于飞腾2000CPU+浪潮电脑+统信UOS安装达梦数据库详解 https://blog.csdn.net/LaoYuanPython/article/details/143258863》中介绍了基于飞腾2000CPU+浪潮电脑+统信UOS安装达梦数据库的详细过程,并且安装完毕之后通过disql可以正常访问数据库,以为安装过程没什么问题,但今天培训上课时发现其实还是留坑了。
二、问题现象
今天培训上课时,启动dm数据库下tool目录的图形工具monitor报错:
查看对应的日志文件,显示日志内容如下:
dmdba@jwp:~/dmdbms/tool/workspace/configuration/monitor$ cat 1730293412876.log
!SESSION 2024-10-30 21:03:32.527 -----------------------------------------------
eclipse.buildId=M20110210-1200
java.version=21.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
Framework arguments: -product com.dameng.monitor.product
Command-line arguments: -os linux -ws gtk -arch x86_64 -data /home/dmdba/dmdbms/tool/workspace/data/monitor -product com.dameng.monitor.product!ENTRY org.eclipse.osgi 4 0 2024-10-30 21:03:32.963
!MESSAGE error loading hook: org.eclipse.osgi.internal.baseadaptor.BaseHookConfigurator
!STACK 0
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 @445b84c0at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391)at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367)at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315)at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:203)at java.base/java.lang.reflect.Method.setAccessible(Method.java:197)at org.eclipse.osgi.internal.baseadaptor.BaseStorage.findMethod(BaseStorage.java:167)at org.eclipse.osgi.internal.baseadaptor.BaseStorage.findMethod(BaseStorage.java:174)at org.eclipse.osgi.internal.baseadaptor.BaseStorage.findAddURLMethod(BaseStorage.java:158)at org.eclipse.osgi.internal.baseadaptor.BaseStorage.<init>(BaseStorage.java:128)at org.eclipse.osgi.internal.baseadaptor.BaseHookConfigurator.addHooks(BaseHookConfigurator.java:24)at org.eclipse.osgi.baseadaptor.HookRegistry.loadConfigurators(HookRegistry.java:178)at org.eclipse.osgi.baseadaptor.HookRegistry.initialize(HookRegistry.java:100)at org.eclipse.osgi.baseadaptor.BaseAdaptor.<init>(BaseAdaptor.java:89)at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)at org.eclipse.core.runtime.adaptor.EclipseStarter.createAdaptor(EclipseStarter.java:752)at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:282)at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)at org.eclipse.equinox.launcher.Main.run(Main.java:1408)at org.eclipse.equinox.launcher.Main.main(Main.java:1384)!ENTRY org.eclipse.osgi 4 0 2024-10-30 21:03:33.057
!MESSAGE Startup error
!STACK 1
java.lang.NullPointerException: Cannot invoke "org.eclipse.osgi.internal.baseadaptor.BaseStorage.initialize(org.eclipse.osgi.baseadaptor.BaseAdaptor)" because "this.storage" is nullat org.eclipse.osgi.baseadaptor.BaseAdaptor.initializeStorage(BaseAdaptor.java:114)at org.eclipse.osgi.framework.internal.core.Framework.initialize(Framework.java:185)at org.eclipse.osgi.framework.internal.core.Framework.<init>(Framework.java:157)at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:286)at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)at org.eclipse.equinox.launcher.Main.run(Main.java:1408)at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
dmdba@jwp:~/dmdbms/tool/workspace/configuration/monitor$
经咨询达梦专家,判断为JDK版本的问题。
三、处理步骤
为了解决问题,进行如下处理:
1、卸载单独安装的JJDK
对于博文《基于飞腾2000CPU+浪潮电脑+统信UOS安装达梦数据库详解 https://blog.csdn.net/LaoYuanPython/article/details/143258863》介绍步骤中单独安装的JDK通过仓库进行卸载;
2、重新设置JAVA_HOME环境变量
将登录shell中设置的JAVA_HOME设置为指向达梦数据库安装目录下自带的JDK,在笔者机器上设置为:
export JAVA_HOME=/home/dmdba/dmdbms/jdk
登录shell中有关脚本配置如下图:
3、修改monitor
monitor其实是一个shell文件,里面设置了环境变量JAVA_HOME环境变量,导致登录shell的JAVA_HOME环境变量被覆盖,为此注释掉该 设置即可以,如图:
此时重新执行monitor,正常启动,如图:
四、小结
本文介绍了统信UOS下启动图形界面应用工具monitor由于JDK版本适配导致的报错:An error has occurred.的解决办法,避免该问题的解决办法是不单独安装JDK,而是要直接使用达梦数据库自带的JDK,并注意最终环境变量设置要指向达梦数据库自带JDK。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
更多关于统信操作系统的介绍的内容请参考专栏《国产信创之光》的其他文章。
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。