Итак, вчера попалась статья о том, что обновился 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 запускается и работает.
Спасибо большое! Заработало
Огромнейшая благодарность
Спасибо огромное!
Ребята, лучшее спасибо для меня, это поделиться этой статьей любым доступным способом.
Два дня бился как рыба об лед. Сделал все как описано выше и заработало!!!
Автору огромная благодарность.
Рад помочь!
Ещё, как вариант можно Liberica JDK установить. Отрабатывает на ура.
Спасибо, буду иметь в виду.