Puncte:1

Comanda „java” nu a fost găsită pe WSL, chiar dacă comanda „java” funcționează în Powershell

drapel ae

Acest subiect este probabil unul obișnuit, dar când am căutat online, nu am văzut prea multe despre cazul meu, deoarece nu rulez un ubuntu normal, ci mai degrabă WSL (Windows Subsystem for Linux).

Deci problema mea este că am trecut recent de la java 8 la java 17 (am avut nevoie de java 8 pentru un curs), dar am observat că pe terminalele ubuntu, versiunea java încă arăta openjdk-1.8.(ceva), Decat jdk-17 sau ceva de genul ăsta.

Așa că m-am gândit că dezinstalarea openjdk ar face treaba, ceea ce am făcut sudo apt-get autoremove openjdk-8-jre. Cu toate acestea, acum tastând java într-un terminal ubuntu nu mai funcționează deloc și arată: Comanda „java” nu a fost găsită, dar poate fi instalată cu: .... Dar mă tem că instalarea cu una dintre aceste comenzi va instala o nouă versiune de java, în loc să o folosești pe cea care este deja instalată.

Am setat JAVA_HOME variabilă în directorul de instalare java, adică mnt/c/Program Files/Java/jdk-17.0.1, dar spațiul din Program Files pare să fie o problemă.

Cum pot remedia asta? De obicei prefer să folosesc un terminal bash decât Powershell sau cmd pentru că cunosc mai bine comenzile, deci nu pot folosi java sau javac in bash este o problema pentru mine. Mulțumiri!

Puncte:4
drapel cn

Există câteva... lucruri unice despre WSL care contează aici. În primul rând, dacă introduceți numele unui .executabil care este în partea Windows, dar de la WSL, va funcționa. De exemplu, deschideți un prompt Bash în WSL, tastați notepad.exe, și apăsați enter. Se va deschide Notepad.

Înainte să dezinstalați OpenJDK 8, ați avut openjdk-8-jre instalat în WSL și Java 17 instalat în Windows. Când ai sunat java din Windows, a fost suficient de inteligent pentru a adăuga .executabil, și rulați copia Windows a Java. Dar, când ai trecut la WSL, când ai tastat java, a rulat versiunea Linux. Dar dacă ai tastat (în WSL) java.exe, ar fi lansat versiunea Java de Windows de la WSL din același motiv pentru care a funcționat Notepad.

Dacă aș dori să fac dezvoltare Java din WSL, aș dezinstala complet versiunea de Java pentru Windows, aș instala versiunea dorită de Java în WSL (sudo apt update && sudo apt install openjdk-17-jre), și faceți doar dezvoltarea din WSL prin compilatorul WSL Java.

Thibaut B. avatar
drapel ae
Interesant! Am încercat `java.exe` și `javac.exe` în terminalul bash și funcționează corect! Este „rău” să faci asta (adică ar trebui să dezinstalez Windows java și să fac instalarea sudo apt) sau este bine, dar mai puțin intuitiv/ușor?
cocomac avatar
drapel cn
Aș dezinstala Windows java și doar `sudo apt install openjdk-17-jdk`. Dacă intenționați să dezvoltați în Linux, este mai bine să utilizați versiunea Java pentru Linux. Din punct de vedere tehnic, apelarea compilatorului Windows de la WSL va funcționa în teorie, dar ar putea crea probleme neașteptate, cum ar fi sfârșiturile de linie, așa că aș dezinstala Windows Java și aș instala JDK-ul în Ubuntu.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.