Eclipse не может найти JDK, установленный с SDKMAN
Я новичок в sdkman, но мне удалось установить его и установить с ним некоторые программы: JDK, Gradle и некоторые другие. Проблема в том, что после того, как я скачал Eclipse и попытался запустить его, он просто не может найти JDK. Я уже экспортировал JAVA_HOME и PATH. Фактически, я действительно могу запускать java, javac и другие Java-команды из терминала, я даже пробовал с альтернативами обновления. Я изменил владельца папки eclipse без результатов, Eclipse не может найти JDK.
Мне пришлось установить java с помощью apt-get, и это заставляет работать eclipse, но что за использование sdkman? Поэтому мой вопрос: какой конфигурации мне не хватает, чтобы Eclipse использовал установку Java sdkman.
PD: Извините за мой английский.
3 ответа
Я столкнулся с той же проблемой и решил ее, создав символическую ссылку в /usr/bin для java и javac.
cd /usr/bin
sudo ln -s /home/<username>/.sdkman/candidates/java/current/bin/javac javac
sudo ln -s /home/<username>/.sdkman/candidates/java/current/bin/java java
Я получил эти места, делая
which javac
which java
Найдите и отредактируйте файл eclipse.ini и измените строку сразу после "-vm" на это:
/home/YOURUSER/.sdkman/candidates/java/current/bin
Это должно сделать это для систем Linux. Я не уверен насчет Windows или Mac tho.
macOS
Для macOS вам необходимо установить (или добавить)
-vm
аргумент для вашего
/Applications/Eclipse.app/Contents/Eclipse/eclipse.ini
, Например:
-vm
/Users/<YOUR_USER>/.sdkman/candidates/java/8.0.272.hs-adpt/jre/lib/jli/libjli.dylib
Теперь это включено (несколько неочевидно) в документацию eclipse.ini: https://wiki.eclipse.org/Eclipse.ini#Using_a_JDK_without_macOS_directory_layout
ПРИМЕЧАНИЕ. Имейте в виду, что если вы используете
current
вместо использования определенного идентификатора версии JDK будет использоваться значение по умолчанию, если вы запустите Eclipse.app с помощью пользовательского интерфейса (двойной щелчок или использование Spotlight). Если вы запустите его из терминала, он будет использовать тот, который выбран в данный момент.