Run Stm32CubeMX & STM32CubeProgrammer applications with OpenJDK on Windows
Сначала попробовал изменить требуюмую версию Java в инсталлере куба, но понял, что это не помогает. Потом нашёл и “поставил” именно 1.8.0_45 но OpenJRE а не OracleJRE – всё равно не помогло. Потом нашёл некий интересный путь C:ProgramDataOracleJavajavapath ! В нём лежат 3 симлинка на java.exe, javaw.exe, jawaws.exe.
Тут я решил, что “вот оно”, мне надо эти симлинки создать на соответствующие exe файлы из моей версии OpenJRE. И создал. И не помогло ) Куб при установке ругался всё тем же сообщением.
Теперь я решил запустить java.exe через мой симлинк и о чудо, java ругнулась, что в реестре не хватает ветки. Я поставил OracleJDK, экспортнул ветку, удалил OracleJDK, импортнул ветку и подправил пути на свои, вычистив лишние ветки/ключи.
И всё заработало !
Моя версия OpenJDK лежит по такому пути: C:openjdk-12.0.2
А вот текст .reg файла, которым можно указанный выше путь зарегистрировать в реестре:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment12.0.2]
“JavaHome”=”C:\openjdk-12.0.2”
“RuntimeLib”=”C:\openjdk-12.0.2\bin\server\jvm.dll”
“MicroVersion”=”0”
“BuildNumber”=”10”
Насчёт необходимости ключей “MicroVersion”=”0”, “BuildNumber”=”10” я не разбирался. Может они не нужны (так выглядит), но OracleJRE их создаёт. Хз, решил, что лучше оставить. Кто знает что в будущем может поломаться из за их отсутствия.
ОБНОВЛЕНИЕ:
STM32CubeProgrammer не захотел работать с хаком, описаным выше. Как оказалось, CubeProgrammer использует JavaFX, которого нет в официальной сборке OpenJDK. Почему-то за преемлимое время мне не удалось установить OpenJFX поверх OpenJDK, потому я пошёл другим путём и скачал OpenJDK сразу собранный вместе с OpenJFX.
Скачать можно вот по этой ссылке: https://bell-sw.com/pages/java-13/
Архив с этим билдом JDK я распаковал в корень диска C
А вот контент .reg файла, регистрирующего установку этой версии JDK:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREJavaSoftJDK]
“CurrentVersion”=”13.0.0”
[HKEY_LOCAL_MACHINESOFTWAREJavaSoftJDK10.0.2]
“JavaHome”=”C:\bellsoft-jdk13-windows-amd64\jdk-13”
Здесь можно заметить, что ветка реестра содержит версию 10.0.2, а не 13.0.0. Это важно, т.к. по этому имени STM32CubeProgrammer проверяет версию java, которая должна быть 1.8.0 – 10.99.99. Приходится таким путём обманывать STM32CubeProgrammer, если хочется иметь в системе свежую версию JDK.