DBeaver Ultimate edition JAVA程序逆向分析

查看 206|回复 11
作者:Vvvvvoid   
DBeaver Ultimate edition JAVA程序逆向分析
官方下载地址: https://dbeaver.com/download/ultimate/
当前分析版本号: dbeaver-ue-22.1.0
环境
JAVA/Maven/javassist
原理: 利用 javassist 载入 资源文件,并修改字节码,保存为 class 文件 ; 之后自行替换目标 jar包中的 class文件
WIN10/Mac m1 测试通过
分析
安装后打开主程序,弹出未授权框; 关闭框后程序就跑飞了


dialog.jpg (81.2 KB, 下载次数: 0)
下载附件
2022-7-25 16:21 上传

我们在程序主目录, 找到环境下的所有依赖 jar, 搜关键字 ‘No license found’
找到一个关键jar : com.dbeaver.lm.core_2.0.112.202206121904.jar
简单分析后, 记录执行修改如下:
LicenseServiceEmbedded.invalidateActiveLicense 返回 true;


no_license_found.jpg (411.46 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

接着 next,查找下一个
找到关键jar: com.dbeaver.lm.ui_2.0.112.202206121904.jar
注意到当前的 class 是 LicenseMissingDialog , 是 IconAndMessageDialog 的实现类
同时, 该jar包内 有多个 实现类, 一定是哪里有什么判断, 所以调用到了这里的 licenseMiss


miss_license.jpg (285.41 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

接着搜一下 ‘LicenseMissingDialog’ , 看看是谁调用的;
此时定位到了 LicenseManagerUIUtils.checkLicense
看着类名跟方法名都很像真的; 简单分析下这个 方法


license_manager.jpg (398.54 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

看到代码里有一段循环 获取 license , 如果 license miss 则会调用 LicenseMissingDialog 实现类,如果找到直接则返回 license
这里我们注意到 LMLicense 这个 对象; 跟进去看看, 看到一个构造器


LMLicense_cus.jpg (91.83 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

就用这个构造器,直接 让 checkLicense 返回 new LMLicense(xxxxx,xxx...)
改完之后,重新打开程序, 没有弹框里, 能正常使用了, 但是还有一个瑕疵,点击关于 还是显示 Not licensed!


Snipaste_2022-07-25_16-06-34.jpg (147.66 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

接着搜 找到了 第一步的那个类 , 定位到 getActiveProductLicense 这个方法, 看到返回值也是 LMLicense, 把第二部的 return过去就可以


get_license.jpg (422.27 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传



get_active_license.jpg (63.73 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

改完之后保存,打开程序 ok了


Snipaste_2022-07-25_16-05-56.jpg (154.77 KB, 下载次数: 0)
下载附件
2022-7-25 16:22 上传

点更新的时候还是有点小瑕疵,留给大家当作业吧~
具体代码
自行修改路径,以及添加所有程序依赖的 jar包,修改并保存后替换目标 jar包里的 class 文件既可
    org.javassist
    javassist
    3.26.0-GA
ClassPool pool = ClassPool.getDefault();
//设置目标类的路径
pool.insertClassPath("/Applications/DBeaverUltimate.app/Contents/Eclipse/plugins/com.dbeaver.app.advanced_22.1.0.202206121904.jar");
pool.insertClassPath("/Applications/DBeaverUltimate.app/Contents/Eclipse/plugins/com.dbeaver.app.ultimate_22.1.0.202206121904.jar");
......
把主程序相关所有 jar 都添加到 ClassPath 中
//获得要修改的全路径类名
CtClass clazz = pool.get("com.dbeaver.lm.embedded.LicenseServiceEmbedded");
CtMethod bMethod = clazz.getDeclaredMethod("invalidateActiveLicense");
// 重置方法体
bMethod.setBody("return true;");
bMethod = clazz.getDeclaredMethod("getActiveProductLicense");
// 重置方法体
bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"[email protected]\");");
//保存到文件
save(clazz);
//public LMLicense(@NotNull String licenseId, @NotNull LMLicenseType licenseType, Date licenseIssueTime, Date licenseStartTime, Date licenseEndTime, long flags, String productId, String productVersion, String ownerId, String ownerCompany, String ownerName, String ownerEmail) {
clazz = pool.get("com.dbeaver.lm.ui.LicenseManagerUIUtils");
bMethod = clazz.getDeclaredMethod("checkLicense");
// 重置方法体
bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"[email protected]\");");
//保存到文件
save(clazz);
后记
仅供研究学习使用,请勿用于非法用途
注:若转载请注明来源(本贴地址)与作者信息。

下载次数, 下载附件

mouccc   

java :
//获得要修改的全路径类名
                ClassPool pool = ClassPool.getDefault();
                //设置目标类的路径
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.app.advanced_22.1.0.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.app.ultimate_22.1.0.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.lm.core_2.0.112.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.lm.ui_2.0.112.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\org.jkiss.lm_1.0.136.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\org.eclipse.swt.win32.win32.x86_64_3.119.0.v20220223-1102.jar");
                //获得要修改的全路径类名
                //获得要修改的全路径类名
                CtClass clazz = pool.get("com.dbeaver.lm.embedded.LicenseServiceEmbedded");
                CtMethod bMethod = clazz.getDeclaredMethod("invalidateActiveLicense");
                // 重置方法体
                bMethod.setBody("return true;");
                bMethod = clazz.getDeclaredMethod("getActiveProductLicense");
                // 重置方法体
                bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"[email protected]\");");
                //保存到文件
                save(clazz);
                //public LMLicense(@NotNull String licenseId, @NotNull LMLicenseType licenseType, Date licenseIssueTime, Date licenseStartTime, Date licenseEndTime, long flags, String productId, String productVersion, String ownerId, String ownerCompany, String ownerName, String ownerEmail) {
                clazz = pool.get("com.dbeaver.lm.ui.LicenseManagerUIUtils");
                bMethod = clazz.getDeclaredMethod("checkLicense");
                // 重置方法体
                bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"[email protected]\");");
                save(clazz);
        }
        
        private static void save(CtClass sclazz) {
                // TODO Auto-generated method stub
                try {
                        sclazz.writeFile("I:/dbeave");
                        System.out.println("修改成功");
                } catch (IOException | CannotCompileException e) {
                        e.printStackTrace();
                }
        }
class替换:
jar uvf  com.dbeaver.lm.core_2.0.112.202206121739.jar com\dbeaver\lm\embedded\LicenseServiceEmbedded.class
jar uvf  com.dbeaver.lm.ui_2.0.112.202206121739.jar com\dbeaver\lm\ui\LicenseManagerUIUtils.class
最后把修改后的com.dbeaver.lm.core_2.0.112.202206121739.jar、 com.dbeaver.lm.ui_2.0.112.202206121739.jar换绿色版dbeaver plugins ,启动dbeaver报错
!ENTRY org.eclipse.e4.ui.swt.win32.nls 2 0 2022-08-16 17:57:52.541
!MESSAGE Could not resolve module: org.eclipse.e4.ui.swt.win32.nls [573]
  Unresolved requirement: Fragment-Host: org.eclipse.e4.ui.swt.win32
  Unresolved requirement: Fragment-Host: org.eclipse.e4.ui.swt.win32
!ENTRY org.eclipse.ui.win32.nls 2 0 2022-08-16 17:57:52.543
!MESSAGE Could not resolve module: org.eclipse.ui.win32.nls [465]
  Unresolved requirement: Fragment-Host: org.eclipse.ui.win32
  Unresolved requirement: Fragment-Host: org.eclipse.ui.win32
!ENTRY org.eclipse.equinox.security.win32.x86_64.nls 2 0 2022-08-16 17:57:52.544
!MESSAGE Could not resolve module: org.eclipse.equinox.security.win32.x86_64.nls [587]
  Unresolved requirement: Fragment-Host: org.eclipse.equinox.security.win32.x86_64
  Unresolved requirement: Fragment-Host: org.eclipse.equinox.security.win32.x86_64
!ENTRY org.eclipse.core.filesystem.win32.x86_64.nls 2 0 2022-08-16 17:57:52.546
!MESSAGE Could not resolve module: org.eclipse.core.filesystem.win32.x86_64.nls [520]
  Unresolved requirement: Fragment-Host: org.eclipse.core.filesystem.win32.x86_64
  Unresolved requirement: Fragment-Host: org.eclipse.core.filesystem.win32.x86_64
!ENTRY org.eclipse.osgi.compatibility.state.nls 2 0 2022-08-16 17:57:52.548
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nls [575]
  Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
  Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.core.resources.win32.x86_64.nls 2 0 2022-08-16 17:57:52.550
!MESSAGE Could not resolve module: org.eclipse.core.resources.win32.x86_64.nls [529]
  Unresolved requirement: Fragment-Host: org.eclipse.core.resources.win32.x86_64
  Unresolved requirement: Fragment-Host: org.eclipse.core.resources.win32.x86_64
!ENTRY org.eclipse.osgi 4 0 2022-08-16 17:57:52.552
!MESSAGE 应用程序错误
!STACK 1
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
        at org.eclipse.swt.SWT.error(SWT.java:4918)
        at org.eclipse.swt.SWT.error(SWT.java:4833)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:188)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4035)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3635)
        at org.eclipse.swt.widgets.Display.release(Display.java:3710)
        at org.eclipse.swt.graphics.Device.dispose(Device.java:324)
        at org.jkiss.dbeaver.ui.app.standalone.DBeaverApplication.start(DBeaverApplication.java:307)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
        Suppressed: org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?))
                ... 20 more
        Caused by: java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?)
                at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1627)
                at org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree.setInput(DatabaseNavigatorTree.java:284)
                at org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase.lambda$0(NavigatorViewBase.java:110)
                at org.jkiss.dbeaver.ui.UIExecutionQueue.executeInUI(UIExecutionQueue.java:52)
                at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
                at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
                ... 17 more
        Suppressed: org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?))
                ... 20 more
        Caused by: java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?)
                at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1627)
                at org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree.setInput(DatabaseNavigatorTree.java:284)
                at org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase.lambda$0(NavigatorViewBase.java:110)
                at org.jkiss.dbeaver.ui.UIExecutionQueue.executeInUI(UIExecutionQueue.java:52)
                at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
                at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
                ... 17 more
        Suppressed: org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
                ... 20 more
        Caused by: org.eclipse.swt.SWTException: Widget is disposed
                at org.eclipse.swt.SWT.error(SWT.java:4918)
                at org.eclipse.swt.SWT.error(SWT.java:4833)
                at org.eclipse.swt.SWT.error(SWT.java:4804)
                at org.eclipse.swt.widgets.Widget.error(Widget.java:447)
                at org.eclipse.swt.widgets.Widget.getDisplay(Widget.java:569)
                at org.jkiss.dbeaver.ui.navigator.project.ProjectExplorerView.createColumns(ProjectExplorerView.java:100)
                at org.jkiss.dbeaver.ui.navigator.project.ProjectExplorerView.lambda$0(ProjectExplorerView.java:84)
                at org.jkiss.dbeaver.ui.UIExecutionQueue.executeInUI(UIExecutionQueue.java:52)
                at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
                at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
                ... 17 more
Caused by: java.lang.NullPointerException
        at org.jkiss.dbeaver.core.WorkbenchContextListener.listenWindowEvents(WorkbenchContextListener.java:96)
        at org.jkiss.dbeaver.core.WorkbenchContextListener.[i](WorkbenchContextListener.java:54)
        at org.jkiss.dbeaver.core.WorkbenchContextListener.registerInWorkbench(WorkbenchContextListener.java:241)
        at org.jkiss.dbeaver.core.DesktopUI.lambda$0(DesktopUI.java:137)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
        ... 17 more
!ENTRY org.eclipse.e4.ui.workbench 4 0 2022-08-16 17:57:52.567
!MESSAGE NullPointerException
!STACK 0
java.lang.NullPointerException
        at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:224)
        at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:242)
        at org.eclipse.ui.part.WorkbenchPart.dispose(WorkbenchPart.java:105)
        at org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase.dispose(NavigatorViewBase.java:273)
        at org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorView.dispose(DatabaseNavigatorView.java:94)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:264)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
        at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:452)
        at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:161)
        at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:83)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:68)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:102)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:144)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
        at org.eclipse.osgi.container.Module.doStop(Module.java:658)
        at org.eclipse.osgi.container.Module.stop(Module.java:521)
        at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
        at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:226)
        at java.base/java.lang.Thread.run(Unknown Source)
!ENTRY org.eclipse.e4.ui.workbench 4 0 2022-08-16 17:57:52.576
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.eclipse.e4.core.di.InjectionException: org.eclipse.swt.SWTException: Device is disposed
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
        at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:452)
        at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:161)
        at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:83)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:68)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:102)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:144)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
        at org.eclipse.osgi.container.Module.doStop(Module.java:658)
        at org.eclipse.osgi.container.Module.stop(Module.java:521)
        at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
        at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:226)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.swt.SWTException: Device is disposed
        at org.eclipse.swt.SWT.error(SWT.java:4918)
        at org.eclipse.swt.SWT.error(SWT.java:4833)
        at org.eclipse.swt.SWT.error(SWT.java:4804)
        at org.eclipse.swt.widgets.Display.error(Display.java:1272)
        at org.eclipse.swt.widgets.Display.asyncExec(Display.java:789)
        at org.eclipse.ui.internal.WorkbenchWindow$3.changed(WorkbenchWindow.java:886)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:105)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(EclipseContext.java:356)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.set(EclipseContext.java:372)
        at org.eclipse.e4.ui.internal.services.ContextContextService.setEventCaching(ContextContextService.java:126)
        at org.eclipse.e4.ui.internal.services.ContextContextService.deferUpdates(ContextContextService.java:87)
        at org.eclipse.ui.internal.contexts.ContextService.deferUpdates(ContextService.java:92)
        at org.eclipse.ui.internal.contexts.ContextService.deactivateContexts(ContextService.java:203)
        at org.eclipse.ui.internal.contexts.SlaveContextService.dispose(SlaveContextService.java:197)
        at org.eclipse.ui.internal.PartSite.dispose(PartSite.java:344)
        at org.eclipse.ui.internal.ViewSite.dispose(ViewSite.java:58)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.disposeSite(CompatibilityPart.java:443)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.disposeSite(CompatibilityView.java:291)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.internalDisposeSite(CompatibilityPart.java:434)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:272)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
        ... 27 more
!ENTRY org.jkiss.dbeaver.model 2 0 2022-08-16 17:57:52.834
!MESSAGE Listener 'org.jkiss.dbeaver.ui.actions.datasource.DataSourceToolbarHandler@406c2554' is not unregistered from DBM model
!ENTRY org.jkiss.dbeaver.model 2 0 2022-08-16 17:57:52.838
!MESSAGE Some project listeners are still register: [com.dbeaver.ee.application.EnterpriseWorkbenchWindowAdvisor@182208ed, org.jkiss.dbeaver.ui.navigator.project.ProjectExplorerView@23f9d0ce]
!ENTRY org.jkiss.dbeaver.model 2 0 2022-08-16 17:57:52.841
!MESSAGE Some datasource registry listeners are still registered: [org.jkiss.dbeaver.ui.actions.datasource.DataSourceToolbarHandler@406c2554]
goastship   


Vvvvvoid 发表于 2022-7-26 18:02
不需要, 用了几天没有遇到过这个窗口
可能被不小心爆破没了...

谢谢解惑,找到原因了,dbeaver.ini 文件配置问题。
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.400.v20211117-0650
-vm:C:\Program Files (x86)\Java\jre1.8.0_333\bin\java  //此处使用系统安装的 JAVA
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11
-Xms128m
-Xmx2048m
-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT
-Ddbeaver.distribution.type=exe
-Dlm.debug.mode=true  //添加此语句后,错误不再出现
guijun   

写得很好!
cai2532   

学习并 拜读了。
Vvvvvoid
OP
  

WIN10/Mac m1 测试通过
kds0221   

感谢分享,学习学习。有时间试一下
irrtatingbear21   

拜读大作!
cxq297532493   

感谢大佬技术分享
linxun   

写得很好!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部