DevEco-Studio 的Bug
DevEco-Studio 的Bug

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

报错信息我贴下面了:
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)
开发者你好,请问你的开发工具版本是多少的?我使用DevEco Studio 6.0.1 Release版本频繁切换登录未出现你的这种情况。看下你的DevEco Studio有没有配置代理,或者浏览器插件有代理或者电脑上的hosts代理等。尝试下以下方案,如未能解决请再反馈下。
【解决方案】
DevEco Studio与华为账号之间的登录通道异常,如点击了DevEco Studio登录界面的Cancel按钮,或者登录过程中,DevEco Studio异常关闭。
尝试以下操作:
- 请尝试重新登录,建议在登录过程中不要做其它操作,避免误操作。
- 检查HTTP Proxy设置。
- 如果您的网络无需代理即可访问Internet,设置了代理会影响模拟器的登录授权,请检查并将HTTP Proxy设置为“No proxy”。
- 如果您的网络需要代理访问Internet,未设置代理会影响模拟器的登录授权,请检查并将HTTP Proxy设置为“Manual proxy configuration”,设置方法可参考DevEco Studio代理设置。
本版本表示也没有这个问题。
建议检查下:
-
windows上面别用非管理员账号登录。
-
软件安装目录不要有中文或者空格。
根据你提供的错误日志,这是一个典型的空指针异常(NullPointerException)。问题出现在 com.huawei.deveco.hos.login.ui.LoggedPanel.adjustComboBoxWidth 方法中,具体是 sun.font.FontDesignMetrics.stringWidth 方法接收到了一个 null 字符串。
问题分析:
- 根本原因:在切换用户后,构建用户界面(具体是调整下拉框宽度)时,尝试获取某个应为字符串的UI组件(如用户名、团队名)的文本宽度,但该组件的文本内容为
null。 - 触发路径:点击用户头像(小人)->
UserCenterAction-> 创建LoggedPanel->createTeamInfoPanel->adjustComboBoxWidth-> 调用FontDesignMetrics.stringWidth(null)导致崩溃。 - 现象:界面无法弹出,因为UI初始化过程因异常而中断。
临时解决方案: 由于这是IDE内部组件的一个缺陷,在官方修复前,可以尝试以下操作来清除可能导致问题的缓存或状态:
- 完全退出DevEco Studio。
- 删除用户配置缓存目录(请先备份):
- Windows:
%APPDATA%\Huawei\DevEcoStudio3.1(版本号路径可能不同,例如DevEcoStudio4.0) - macOS:
~/Library/Application Support/Huawei/DevEcoStudio3.1 - 删除或重命名此目录下的
cache和local文件夹。
- Windows:
- 重新启动DevEco Studio并登录。
根本解决:
此问题需要华为开发团队修复 LoggedPanel 组件,在 adjustComboBoxWidth 方法(LoggedPanel.java:219)中,对传入 FontDesignMetrics.stringWidth() 的字符串参数进行空值检查。建议将错误日志和复现步骤反馈至官方问题跟踪渠道。


