CubeMX Version 6.18.0 error in opening/rendering UI of an old IOC project file
I have an existing IOC project originally created using STM32CubeMX v6.6.1 with STM32Cube Firmware Package FW_L4 v1.17.2. When opening this project, STM32CubeMX fails to properly render the UI (see error message below).
During this issue:
- All Save-related menu options are disabled (greyed out).
- The project filename displayed in the upper-right corner includes a
*, indicating unsaved modifications. - When attempting to close the project or exit the application, a prompt appears to save changes, but the project cannot actually be saved.
Given this behavior, I would like clarification on the following:
- Could the IOC file be corrupted?
- Is this strictly a UI rendering issue, or something deeper (e.g., metadata or version incompatibility)?
- What is the likely root cause of this error, and how can it be resolved?
2026-07-01 09:08:40,585 [FATAL] ProcessBarDialog:168 - ProcessBarDialog action 4
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
at javax.swing.SwingWorker.get(SwingWorker.java:612) ~[?:?]
at com.st.microxplorer.util.ProcessBarDialog$1.done(ProcessBarDialog.java:164) ~[STM32CubeMX.exe:?]
at javax.swing.SwingWorker$4.run(SwingWorker.java:749) ~[?:?]
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:847) ~[?:?]
at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112) ~[?:?]
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857) ~[?:?]
at javax.swing.Timer.fireActionPerformed(Timer.java:311) ~[?:?]
at javax.swing.Timer$DoPostEvent.run(Timer.java:243) ~[?:?]
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) ~[?:?]
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191) ~[?:?]
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236) ~[?:?]
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:319) ~[?:?]
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234) ~[?:?]
at java.awt.Dialog.show(Dialog.java:1079) ~[?:?]
at java.awt.Component.show(Component.java:1728) ~[?:?]
at java.awt.Component.setVisible(Component.java:1675) ~[?:?]
at java.awt.Window.setVisible(Window.java:1036) ~[?:?]
at java.awt.Dialog.setVisible(Dialog.java:1015) ~[?:?]
at com.st.microxplorer.util.ProcessBarDialog.doAction(ProcessBarDialog.java:173) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.mxsystem.MxSystem.completeLoadConfig(MxSystem.java:845) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.LoadConfig(OpenFileManager.java:393) ~[?:?]
at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:307) ~[?:?]
at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.userChoiceLoadConfig(OpenFileManager.java:138) ~[?:?]
at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userChoiceAndLoadConfig(MainFileManager.java:227) ~[?:?]
at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:277) ~[?:?]
at com.st.microxplorer.maingui.HomeProjectLinePanel.jButtonChoiceAndLoadConfigurationActionPerformed(HomeProjectLinePanel.java:187) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.maingui.HomeProjectLinePanel.mouseClicked(HomeProjectLinePanel.java:143) ~[STM32CubeMX.exe:?]
at java.awt.Component.processMouseEvent(Component.java:6624) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3398) ~[?:?]
at java.awt.Component.processEvent(Component.java:6386) ~[?:?]
at java.awt.Container.processEvent(Container.java:2266) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:4996) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2324) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4828) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4584) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2310) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2780) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4828) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:747) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:745) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:744) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?]
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at com.st.microxplorer.plugins.power.util.ConversionUnit.timeFloatConversion(ConversionUnit.java:385) ~[?:?]
at com.st.microxplorer.plugins.power.PowerPluginView.propertyChange(PowerPluginView.java:182) ~[?:?]
at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?]
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?]
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?]
at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.mxsystem.MxSystem.swingWorkerCompleteLoadConfig(MxSystem.java:851) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.util.ProcessBarDialog.performAction(ProcessBarDialog.java:95) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.util.ProcessBarDialog$1.doInBackground(ProcessBarDialog.java:157) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.util.ProcessBarDialog$1.doInBackground(ProcessBarDialog.java:154) ~[STM32CubeMX.exe:?]
at javax.swing.SwingWorker$1.call(SwingWorker.java:305) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
at javax.swing.SwingWorker.run(SwingWorker.java:342) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
2026-07-01 09:08:40,605 [INFO] OpenFileManager:403 - Restore cursor
2026-07-01 09:08:40,751 [ERROR] ProjectManagerView:491 -
java.lang.NullPointerException: Cannot invoke "com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(boolean, boolean)" because "this.m_clProjectSettingsPanel" is null
at com.st.microxplorer.plugins.projectmanager.engine.MainProjectManager.loadConfig(MainProjectManager.java:642) ~[?:?]
at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:489) ~[?:?]
at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?]
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?]
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?]
at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.mxsystem.MxSystem.MxFirePropertyChange(MxSystem.java:228) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userChoiceAndLoadConfig(MainFileManager.java:251) ~[?:?]
at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:277) ~[?:?]
at com.st.microxplorer.maingui.HomeProjectLinePanel.jButtonChoiceAndLoadConfigurationActionPerformed(HomeProjectLinePanel.java:187) ~[STM32CubeMX.exe:?]
at com.st.microxplorer.maingui.HomeProjectLinePanel.mouseClicked(HomeProjectLinePanel.java:143) ~[STM32CubeMX.exe:?]
at java.awt.Component.processMouseEvent(Component.java:6624) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3398) ~[?:?]
at java.awt.Component.processEvent(Component.java:6386) ~[?:?]
at java.awt.Container.processEvent(Container.java:2266) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:4996) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2324) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4828) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4584) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2310) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2780) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4828) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:747) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:745) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:744) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?]
