DevEco-Studio 的Bug

DevEco-Studio 的Bug cke_406.png

每次切换用户登陆之后,这个用户的小人就再也点不开了。。而且问题也是必现的,很影响体验,重启了两遍应用也不好使。。

cke_7642.png

报错信息我贴下面了:

java.lang.NullPointerException: str is null
	at java.desktop/sun.font.FontDesignMetrics.stringWidth(FontDesignMetrics.java:551)
	at com.huawei.deveco.hos.login.ui.LoggedPanel.adjustComboBoxWidth(LoggedPanel.java:219)
	at com.huawei.deveco.hos.login.ui.LoggedPanel.createTeamInfoPanel(LoggedPanel.java:188)
	at com.huawei.deveco.hos.login.ui.LoggedPanel.createTextDisplay(LoggedPanel.java:161)
	at com.huawei.deveco.hos.login.ui.LoggedPanel.createActiveTextDisplay(LoggedPanel.java:280)
	at com.huawei.deveco.hos.login.ui.LoggedPanel.<init>(LoggedPanel.java:110)
	at com.huawei.deveco.hos.login.action.UserCenterAction.actionPerformed(UserCenterAction.java:85)
	at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:223)
	at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$2(ActionButton.java:203)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks(ActionManagerImpl.kt:1173)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.kt:396)
	at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:203)
	at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:519)
	at java.desktop/java.awt.Component.processEvent(Component.java:6427)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5032)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4860)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4963)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4577)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4518)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2810)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4860)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:783)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:755)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:753)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:752)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:675)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:621)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$21(IdeEventQueue.kt:564)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:128)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:564)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18$lambda$17$lambda$16$lambda$15(IdeEventQueue.kt:355)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:857)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18$lambda$17$lambda$16(IdeEventQueue.kt:354)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$2$lambda$1(IdeEventQueue.kt:1045)
	at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:128)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:917)
	at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
	at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$2(IdeEventQueue.kt:1045)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$3(IdeEventQueue.kt:1054)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:117)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1054)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:395)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

4 回复

开发者你好,请问你的开发工具版本是多少的?我使用DevEco Studio 6.0.1 Release版本频繁切换登录未出现你的这种情况。看下你的DevEco Studio有没有配置代理,或者浏览器插件有代理或者电脑上的hosts代理等。尝试下以下方案,如未能解决请再反馈下。

【解决方案】

DevEco Studio与华为账号之间的登录通道异常,如点击了DevEco Studio登录界面的Cancel按钮,或者登录过程中,DevEco Studio异常关闭。

尝试以下操作:

  1. 请尝试重新登录,建议在登录过程中不要做其它操作,避免误操作。
  2. 检查HTTP Proxy设置。
    • 如果您的网络无需代理即可访问Internet,设置了代理会影响模拟器的登录授权,请检查并将HTTP Proxy设置为“No proxy”。
    • 如果您的网络需要代理访问Internet,未设置代理会影响模拟器的登录授权,请检查并将HTTP Proxy设置为“Manual proxy configuration”,设置方法可参考DevEco Studio代理设置

cke_117.png本版本表示也没有这个问题。

建议检查下:

  1. windows上面别用非管理员账号登录。

  2. 软件安装目录不要有中文或者空格。

DevEco Studio存在部分已知问题,包括IDE启动卡顿、模拟器连接不稳定、部分API预览异常等。具体表现如项目同步失败、UI界面渲染错误、真机调试断连。这些问题通常与特定版本相关,建议检查更新日志或问题追踪列表。

根据你提供的错误日志,这是一个典型的空指针异常(NullPointerException)。问题出现在 com.huawei.deveco.hos.login.ui.LoggedPanel.adjustComboBoxWidth 方法中,具体是 sun.font.FontDesignMetrics.stringWidth 方法接收到了一个 null 字符串。

问题分析:

  1. 根本原因:在切换用户后,构建用户界面(具体是调整下拉框宽度)时,尝试获取某个应为字符串的UI组件(如用户名、团队名)的文本宽度,但该组件的文本内容为 null
  2. 触发路径:点击用户头像(小人)-> UserCenterAction -> 创建 LoggedPanel -> createTeamInfoPanel -> adjustComboBoxWidth -> 调用 FontDesignMetrics.stringWidth(null) 导致崩溃。
  3. 现象:界面无法弹出,因为UI初始化过程因异常而中断。

临时解决方案: 由于这是IDE内部组件的一个缺陷,在官方修复前,可以尝试以下操作来清除可能导致问题的缓存或状态:

  1. 完全退出DevEco Studio。
  2. 删除用户配置缓存目录(请先备份):
    • Windows: %APPDATA%\Huawei\DevEcoStudio3.1 (版本号路径可能不同,例如 DevEcoStudio4.0
    • macOS: ~/Library/Application Support/Huawei/DevEcoStudio3.1
    • 删除或重命名此目录下的 cachelocal 文件夹。
  3. 重新启动DevEco Studio并登录。

根本解决: 此问题需要华为开发团队修复 LoggedPanel 组件,在 adjustComboBoxWidth 方法(LoggedPanel.java:219)中,对传入 FontDesignMetrics.stringWidth() 的字符串参数进行空值检查。建议将错误日志和复现步骤反馈至官方问题跟踪渠道。

回到顶部