向DBeaver /plugin目录添加自定义插件失败求助
核心问题
开发的Hello World插件无法在本地DBeaver(25.0.2.202504061727)实例中加载,放入安装目录/plugins无效果,日志无报错,ss命令显示未加载,但在Eclipse中以DBeaver为目标平台运行正常,放入Eclipse插件目录也能正常运行。插件的MANIFEST.MF内容如下:
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Dbeaverplugin Bundle-SymbolicName: com.scb.dbeaverplugin; singleton:=true Bundle-Version: 1.0.0 Bundle-Activator: com.scb.dbeaverplugin.Activator Bundle-Vendor: SCB Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime Bundle-RequiredExecutionEnvironment: JavaSE-21 Automatic-Module-Name: com.scb.dbeaverplugin Bundle-ActivationPolicy: lazy
排查步骤
1. 修正插件JAR命名格式
DBeaver的OSGi框架对插件JAR命名有严格要求,必须遵循[Bundle-SymbolicName]_[Bundle-Version].jar格式。你的插件需命名为com.scb.dbeaverplugin_1.0.0.jar,非规范命名会被框架直接忽略。
2. 核对Java版本兼容性
打开DBeaver安装目录下的dbeaver.ini,查看-vmargs段的-Dosgi.requiredJavaVersion参数,确认DBeaver实际运行的Java版本不低于插件指定的JavaSE-21,版本不匹配会导致插件静默加载失败。
3. 更换插件放置目录
不要将自定义插件放到DBeaver安装目录的/plugins(该目录为自带插件专属),改用用户数据目录下的插件文件夹:
- Windows:
C:\Users\[你的用户名]\AppData\Roaming\DBeaverData\plugins - macOS:
~/Library/DBeaverData/plugins - Linux:
~/.local/share/DBeaverData/plugins
4. 开启OSGi详细日志排查
启动DBeaver时替换原参数,添加详细日志配置:
-consolelog -Dosgi.debug=debug.options -Dorg.eclipse.equinox.log.level=ALL
同时在DBeaver启动目录创建debug.options文件,内容为:
org.eclipse.equinox.framework/debug=true org.eclipse.equinox.framework/debug/osgi=true org.eclipse.equinox.framework/debug/bundleLifecycle=true
启动后查看日志,可获取插件扫描、解析的完整过程,定位被忽略的具体原因。
5. 检查依赖Bundle的可用性
启动DBeaver时添加-console参数进入OSGi控制台,执行diag com.scb.dbeaverplugin命令,查看插件依赖的org.eclipse.ui、org.eclipse.core.runtime在DBeaver环境中的版本是否匹配,依赖缺失会导致插件无法加载。
6. 使用DBeaver内置安装功能
打开DBeaver,进入Help > Install New Software,点击Add选择Local,浏览到插件JAR所在目录完成安装。该方式会让OSGi框架自动处理依赖与命名,避免手动放置目录的问题。
内容的提问来源于stack exchange,提问作者PavelK

