Skip to main content
FUhl.2
Associate
April 25, 2021
Question

STM32CubeMX crashes on launch with OpenJDK16

  • April 25, 2021
  • 3 replies
  • 1709 views

I recently upgraded from OpenJDK15 to 16 on my machine and noticed that STM32CubeMX now crashes at launch. The splashscreen shows up, but the main window never appears.

Here's a slightly abbreviated output:

$ java -jar STM32CubeMX
log4j user configuration file not found: /home/[...]/.stm32cubemx/log4j.properties
Configure log4j with default settings from jar:file:/opt/STM32CubeMX/STM32CubeMX.exe!/log4j/log4j.stm32cubemx.properties
2021-04-25 22:46:19,141 [INFO] MicroXplorer:76 - [MX] MX Start
2021-04-25 22:46:19,143 [INFO] MicroXplorer:564 - Detected Java Version = 16
[...]
2021-04-25 22:46:20,022 [INFO] PluginManage:178 - Search for loadable plugins [exclusion list=, ]
2021-04-25 22:46:20,024 [INFO] PluginManage:292 - Check plugin analytics
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
 at com.thoughtworks.xstream.XStream.setupConverters(XStream.java:990)
 at com.thoughtworks.xstream.XStream.<init>(XStream.java:593)
 at com.thoughtworks.xstream.XStream.<init>(XStream.java:515)
 at com.thoughtworks.xstream.XStream.<init>(XStream.java:484)
 at com.thoughtworks.xstream.XStream.<init>(XStream.java:430)
 at com.thoughtworks.xstream.XStream.<init>(XStream.java:397)
 at com.st.library.rawvaluescontainer.FilesUtils.<clinit>(FilesUtils.java:41)
 at com.st.library.analyticscore.AnalyticsContext.<init>(AnalyticsContext.java:167)
 at com.st.library.dynamicproxy.AnalyticsInvocationHandler.<init>(AnalyticsInvocationHandler.java:36)
 at com.st.library.builder.AnalyticsBuilder.getAnalytics(AnalyticsBuilder.java:33)
 at com.st.library.analyticscore.AnalyticsAPI.initialize(AnalyticsAPI.java:132)
 at com.st.microxplorer.plugins.analytics.AnalyticsPlugin.<init>(AnalyticsPlugin.java:165)
 at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
 at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
 at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
 at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350)
 at java.base/java.lang.Class.newInstance(Class.java:642)
 at com.st.microxplorer.plugin.PluginManage.loadPluginJar(PluginManage.java:335)
 at com.st.microxplorer.plugin.PluginManage.PluginSearch(PluginManage.java:206)
 at com.st.microxplorer.plugin.PluginManage.PluginDiscovery(PluginManage.java:49)
 at com.st.microxplorer.maingui.MainPanel.initialization(MainPanel.java:236)
 at com.st.microxplorer.maingui.MainFrame.initialization(MainFrame.java:149)
 at com.st.microxplorer.maingui.MicroXplorer.run(MicroXplorer.java:226)
 at com.st.microxplorer.maingui.STM32CubeMX.run(STM32CubeMX.java:25)
 at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
 at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
 at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
 at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
 at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
 at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
 at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
 at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
 at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
 at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
 at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible: module java.base does not "opens java.util" to unnamed module @227132a6
 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
 at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)
 at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)
 at com.thoughtworks.xstream.core.util.Fields.locate(Fields.java:40)
 at com.thoughtworks.xstream.converters.collections.TreeMapConverter.<clinit>(TreeMapConverter.java:50)
 ... 39 more

This seems to be an issue with an outdated version of XStream, see https://github.com/x-stream/xstream/issues/101#issuecomment-722701986

This topic has been closed for replies.

3 replies

Khouloud ZEMMELI
ST Employee
May 3, 2021

Hello @FUhl.2​ ,

Thanks for your question,

Could you please give me more details about the CubeMX version used?

Khouloud

FUhl.2
FUhl.2Author
Associate
May 3, 2021

Hi Khouloud, the version I'm using is 6.2.1

Khouloud ZEMMELI
ST Employee
May 3, 2021

Hi again @FUhl.2​ 

Thanks for your reply,

In fact, previously CubeMX used the default JRE installed on the system, which may not conform to the one we recommend, for that, and since the 6.2.0 version, the JRE has become integrated in CubeMX, therefore, this command has become obsolete : "java -jar STM32CubeMX".

To run CubeMX from Command line, this command must be used instead : "cd <STM32CubeMX installation path> jre\bin\java -jar STM32CubeMX.exe ".

Hope my answer helped you :) When your question is answered and your problem is resolved, please close the topic by choosing Select as best, this will help other users find that answer faster.

Thanks for your contribution, Khouloud