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). Если вы запустите его из терминала, он будет использовать тот, который выбран в данный момент.

Другие вопросы по тегам