No Java installed [OR] Custom Java Directory | Windows
b5414 opened this issue · 3 comments
Насколько я вижу, в функции findJava()
, жава ищется в директории таким образом:
ExamineDirectory(#PB_Any, programFilesDir(i) + "Java", "*")
, т.е.if "C:\Program Files (x86)\Java\*"
но, у инстолятора жава (win) - есть опция: "выбрать кастомную директорию"
Так вот, лично я её пользую каждую установку, например можно закинуть java на 2й ссд, либо просто в другую директорию (пример ниже) как это сделал я, следовательно лаунчер напишет: жабы нет ☹
Да, я прекрасно понимаю, что искать по всем папка жаву - не выход,
[и я догадываюсь, что @Kron4ek больше в линукс, чем в виндовс,]
но, у шинды(как и вроде у линуха) есть замечательные якоря/переменные среды/environment variables, например %appdata%
...
В общем, я потестил GetEnvironmentVariable("Path")
- работает нормально, выдает такую строку:
C:\Program Files (x86)\PureBasic\Compilers\;C:\Program Files\Java64bit\bin;C:\Program Files (x86)\Java32bit\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
- аутпут выше - без_изменений/валидный == можно использовать для тестов
- так же, строка может заканчиваться как на
...bin\;
, так и на...bin;
, семиколон есть всегда
Отсюда уже - можно получить валидный путь к жаве 🙂
Не знаю, будут ли я это реализовывать. Но я приму к сведению, что Java при установке прописывает себя в Path, спасибо за информацию. И да, на Linux тоже есть PATH и прочие переменные окружения, но на винде как-то не подумал про это.
Вообще-то если устанавливать обычную java с сайта Oracle то она ничего не прописывает в path, если ставить jdk 16, 17 и т.п., прописывают только инсталяторы Adoptium или bellsoft, вы могли конечно руками прописать path, но получается что такое решение тоже не универсально.. поэтому при любых кастомах я думаю лучше использовать именно функцию указания своего пути в настройках. В своем форке я сделал по-тупому и просто ищу дополнительно папки Adoptium и bellsoft если настройки заданы по умолчанию.
@jedai86 да, я указал пути потому-что думал, что так лаунчер и работает, но нет;
Всё-таки указывается, но не каждый инсталл, а конкретно C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
, тут лежит "какая-то жаба" (вроде бы альяс)
> "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe" -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
< size: 271 КБ (278 296 байт)
> "C:\Program Files\Java64bit\bin\java.exe" -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
< size: 271 КБ (278 296 байт)
на всякий случай - java32:
< size: 241 КБ (247 576 байт)