STM32CubeProgrammer не запускается в Linux

Итак, вчера попалась статья о том, что обновился STM32CubeProgrammer, до этого дня я им не пользовался и вот решил попробовать его поставить и запустить, хотя в чате меня предупредили, что запустить его в Linux дело нетривиальное.

Небольшая ремарка, я пользуюсь дистрибутивом Elementary OS 5.0 Juno на базе Ubuntu 18.04.2 LTS, т.е. данный процесс запуска будет работать на всех дистрибутивах на базе Ubuntu. Как там будут обстоять дела с другими дистрибутивами я не знаю.

В общем, с установкой проблем ни у кого никогда не возникало, не возникло их и у меня. А вот запуск выдал ошибку:

Error: Could not find or load main class com.st.app.Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application

В общем, ни GUI, ни CLI не запускаются и в целом понятно только, что проблема в javafx. Час неистовых танцев с бубном и поиска по зарубежным форумам принесли решение в виде временного решения для запуска.

В первую очередь надо сразу уяснить, что запустить STM32CubeProgrammer с версией Java 11, которая устанавливается по умолчанию в современных ubuntu-based дистрибутивах, не получится, ну или, по крайней мере, у меня это никак не вышло. Так что сразу устанавливаем openjdk-8:

sudo apt-get install openjdk-8-jdk

Теперь смотрим список установленных jdk в системе:

update-java-alternatives --list

У меня вышел вот такой список и думаю у многих он будет именно такой, если до этого вы устанавливали openjdk.

Теперь можно выбрать jdk, используемый по умолчанию:

sudo update-alternatives --config java

Настраиваем JAVA_HOME и PATH для новой версии JDK. Сперва я добавил строку в ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

Перезагружаем bashrc:

source ~/.bashrc

Изменяем PATH:

export PATH=$PATH:$JAVA_HOME/bin

Теперь можно проверить версию Java:

java -version

Теперь самое важное, надо установить старые версии openjfx и библиотеки к нему, после чего защитить эти пакеты от изменения при обновлении дистрибутива:

sudo apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-java=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2 openjfx-source=8u161-b12-1ubuntu2
sudo apt-mark hold libopenjfx-java libopenjfx-jni openjfx openjfx-source

На этом все, теперь STM32CubeProgrammer запускается и работает.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *