Рейтинг:1

Команда «java» не найдена в WSL, хотя команда «java» работает в Powershell

флаг ae

Эта тема, вероятно, является распространенной, но при поиске в Интернете я не нашел ничего, что касалось бы моего случая, так как я использую не обычную Ubuntu, а WSL (подсистема Windows для Linux).

Итак, моя проблема в том, что я недавно перешел с java 8 на java 17 (мне нужна была java 8 для курса), но я заметил, что на терминалах ubuntu, Java-версия еще показал openjdk-1.8.(что-то), скорее, чем JDK-17 или что-то подобное.

Поэтому я подумал, что удаление openjdk поможет, что я и сделал с sudo apt-get autoremove openjdk-8-jre. Однако теперь набрав Ява в терминале Ubuntu больше не работает и показывает: Команда 'java' не найдена, но может быть установлена ​​с помощью: .... Но я боюсь, что установка с помощью одной из этих команд приведет к установке новой версии java, а не к уже установленной.

я установил JAVA_HOME в каталог установки java, который mnt/c/Program Files/Java/jdk-17.0.1, но проблема с местом в Program Files.

Как я могу это исправить? Обычно я предпочитаю использовать терминал bash, чем Powershell или cmd, потому что я лучше знаю команды, поэтому не могу использовать Ява или же javac в bash это проблема для меня. Спасибо!

Рейтинг:4
флаг cn

Есть несколько... уникальных особенностей WSL, которые здесь важны. Во-первых, если вы наберете имя .исполняемый это на стороне Windows, но с WSL это будет работать. Например, откройте приглашение Bash в WSL, введите блокнот.exeи нажмите ввод. Блокнот откроется.

Прежде чем вы удалили OpenJDK 8, у вас было openjdk-8-jre установлен в WSL и Ява 17 установлена ​​в Windows. Когда ты позвонил Ява из Windows, было достаточно ума, чтобы добавить .исполняемыйи запустите копию Java для Windows. Но когда вы переключились на WSL, когда вы набрали Ява, он запускал версию для Linux. Но если вы ввели (в WSL) Java.exe, он запустил бы версию Java для Windows из WSL по той же причине, по которой работал Блокнот.

Если бы я хотел заниматься разработкой Java из WSL, я бы полностью удалил версию Java для Windows, установил нужную версию Java в WSL (sudo apt update && sudo apt установить openjdk-17-jre), и просто выполняйте разработку в WSL с помощью компилятора WSL Java.

Thibaut B. avatar
флаг ae
Это интересно! Я попробовал `java.exe` и `javac.exe` в терминале bash, и он работает правильно! Это «плохо» делать это (т.е. я должен удалить Windows java и выполнить установку sudo apt), или это нормально, но менее интуитивно понятно/просто?
cocomac avatar
флаг cn
Я бы удалил Windows java и просто `sudo apt install openjdk-17-jdk`. Если вы собираетесь разрабатывать в Linux, лучше использовать Linux-версию Java. Технически, вызов компилятора Windows из WSL теоретически будет работать, но может создать непредвиденные проблемы, такие как окончания строк, поэтому я бы просто удалил Windows Java и просто установил JDK в Ubuntu.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.