Podczas próby użycia wersji JDK Oracle dla systemu Linux w najnowszej kompilacji systemu Windows 10 obsługującej bash, napotykam problem z zawieszaniem monitu za każdym razem, gdy próbuję wywołać java
plik binarny.
Wpisanie nawet czegoś tak prostego jak java -version
zawieszenie się i muszę zakończyć proces, aby wznowić kontrolę.
Czy ktoś już to działa?
java
linux
windows
windows-subsystem-for-linux
Saurabh Mishra
źródło
źródło
Odpowiedzi:
Chciałem wyjaśnić, że od 9 grudnia 2016 r. Z całą pewnością można zainstalować Javę 8 na Ubuntu Bash dla Windows 10 i że @Karl Horton jest poprawny.
Będziesz musiał zainstalować unzip
sudo apt-get install unzip
Skopiuj ten skrypt gdzieś w swojej sesji bash for Windows i uczyń go wykonywalnym (chmod + x nazwa pliku). Jeśli nie używasz edytora opartego na linii poleceń, takiego jak vim, będziesz miał do czynienia z zakończeniami linii Windows. możesz użyć dos2unix lub innego preferowanego sposobu radzenia sobie z tym. Po prostu wklejam go do pliku za pomocą vima.
#!/bin/bash set -ex # UPDATE THESE URLs export JDK_URL=http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz export UNLIMITED_STRENGTH_URL=http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip # Download Oracle Java 8 accepting the license wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \ ${JDK_URL} # Extract the archive tar -xzvf jdk-*.tar.gz # clean up the tar rm -fr jdk-*.tar.gz # mk the jvm dir sudo mkdir -p /usr/lib/jvm # move the server jre sudo mv jdk1.8* /usr/lib/jvm/oracle_jdk8 # install unlimited strength policy wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \ ${UNLIMITED_STRENGTH_URL} unzip jce_policy-8.zip mv UnlimitedJCEPolicyJDK8/local_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/ mv UnlimitedJCEPolicyJDK8/US_export_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle_jdk8/jre/bin/java 2000 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle_jdk8/bin/javac 2000 sudo echo "export J2SDKDIR=/usr/lib/jvm/oracle_jdk8 export J2REDIR=/usr/lib/jvm/oracle_jdk8/jre export PATH=$PATH:/usr/lib/jvm/oracle_jdk8/bin:/usr/lib/jvm/oracle_jdk8/db/bin:/usr/lib/jvm/oracle_jdk8/jre/bin export JAVA_HOME=/usr/lib/jvm/oracle_jdk8 export DERBY_HOME=/usr/lib/jvm/oracle_jdk8/db" | sudo tee -a /etc/profile.d/oraclejdk.sh
A teraz mogę wykonać następujące czynności
fieldju@DESKTOP-LTL6MIC:~$ java -version java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
Linki i wersje w powyższym skrypcie mogą być nieaktualne do czasu, gdy to przeczytasz, więc po prostu przejdź do http://www.oracle.com/technetwork/java/javase/downloads/index.html zaakceptuj licencja, aby ich js umożliwiał kopiowanie nowych adresów URL i powinieneś być gotowy.
źródło
unzip
jest to wymagane dla tego skryptu (ponieważ nie jest instalowany domyślnie)sudo: unable to resolve host DESKTOP-6PMR0AI
na komputerze znajomego.Wygląda na to, że w sierpniu 2017 roku rozwiązanie jest prostsze, jak sugeruje @ noah-david.
Udało mi się zainstalować Oracle JDK 8 z repozytorium zespołu „WebUpd8” .
Instrukcje . Aby dodać repozytorium:
Żeby zainstalować:
sudo apt-get install oracle-java8-installer sudo apt install oracle-java8-set-default
Po zainstalowaniu
costin@amanta-win:/mnt/c/work$ java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) costin@amanta-win:/mnt/c/work$ which java /usr/bin/java costin@amanta-win:/mnt/c/work$ uname -a Linux amanta-win 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
źródło
sudo add-apt-repository ppa:webupd8team/java
Muszę czegoś przegapić ... jedyne co zrobiłem to:
sudo apt-get update sudo apt-get install default-jdk java -version
wynik:
java version "1.7.0_131" OpenJDK Runtime Environment (IcedTea 2.6.9) (7u131-2.6.9-0ubuntu0.14.04.2) OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
źródło
sudo apt-get install default-jdk
system Windows 10 18.04 z Ubuntu 18.04 i zainstalowałem OpenJDK 11.Użyłem skryptu podanego przez @fieldju, ale przegapił kilka rzeczy, od których ten skrypt zależy, a także kopiowanie / wklejanie zawartości powoduje, że zakończenia linii Windows / znaki karetki (
/r
) będą musiały zostać zastąpione zwrotami linux. Ponadto okazało się, że znacznie prostsze jest pobranie potrzebnych zamków błyskawicznych i umieszczenie ich obok skryptu. Oto pełna lista tego, co zrobiłem:bash
wpisaćsudo apt-get install zip unzip
, aby upewnić unzip / zip jest zainstalowany nabash
konsolibash
UWAGA: nie zmieniaj nazwę pliku, aby upewnić się, że działa ze skryptemjava_install_predownloaded.sh
w tym samym folderze obok zamków błyskawicznych:Scenariusz:
#!/bin/bash # Extract the archive tar -xzvf jdk-*.tar.gz # mk the jvm dir sudo mkdir -p /usr/lib/jvm # move the server jre sudo mv jdk1.8* /usr/lib/jvm/oracle_jdk8 # install unlimited strength policy mv UnlimitedJCEPolicyJDK8/local_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/ mv UnlimitedJCEPolicyJDK8/US_export_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle_jdk8/jre/bin/java 2000 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle_jdk8/bin/javac 2000 sudo echo "export J2SDKDIR=/usr/lib/jvm/oracle_jdk8 export J2REDIR=/usr/lib/jvm/oracle_jdk8/jre export PATH=$PATH:/usr/lib/jvm/oracle_jdk8/bin:/usr/lib/jvm/oracle_jdk8/db/bin:/usr/lib/jvm/oracle_jdk8/jre/bin export JAVA_HOME=/usr/lib/jvm/oracle_jdk8 export DERBY_HOME=/usr/lib/jvm/oracle_jdk8/db" | sudo tee -a /etc/profile.d/oraclejdk.sh
Ten kod jest zmodyfikowaną wersją z @fieldju, która zakłada, że zipy są już pobrane i znajdują się w tym samym folderze co ten
.sh
plikponieważ plik zawiera zwroty karetki systemu Windows, musisz upewnić się, że zostały one zastąpione, więc
bash
przejdź do miejsca, w którym zapisałeśjava_install_predownloaded.sh
i uruchom następujące polecenie:sed 's/^M$//' java_install_predownloaded.sh > java_install_predownloaded_unix.sh
Następnie wykonałem następujące czynności, aby upewnić się, że na pewno nie ma zakończeń linii w oknach:
sed 's/\r$//' java_install_predownloaded_unix.sh > java_install_predownloaded_unix_final.sh
java_install_predownloaded_unix_final.sh
będzie w folderze, który jest nasza wersja „oczyszczone” bez zakończeń linii okien, więc po prostu trzeba wykonać./java_install_predownloaded_unix_final.sh
wbash
i obserwować magię. Hej, Presto, masz już zainstalowaną Javę na swojej instancji bash w systemie Windows!źródło
Kroki, które wykonałem dla nowej instalacji Oracle JDK 8 na moim Bash (Windows 10):
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
Zaakceptuj licencje
Jesteś skończony! Sprawdź, czy wersja Java jest używana,
java -version
a oczekiwany wynik powinien wyglądać mniej więcej tak:java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
PS W chwili, gdy to piszę, wydano stabilną wersję Oracle 9 JDK, prawdopodobnie mógłbyś poprawić krok 4 powyżej.
Źródła: https://poweruphosting.com/blog/install-java-ubuntu/
źródło
Wydaje się, że instalacja JDK8 nie działa w tej chwili na kompilacji # 14316 WSL. Ale próba zainstalowania JDK7 działała dobrze dla mnie. Zapoznaj się z ograniczeniami tej instalacji w tej chwili i będziemy na bieżąco. Pomysł wziął się stąd: https://github.com/Microsoft/BashOnWindows/issues/196
źródło
Potwierdzam tutaj, że Oracle JDK w wersji 8u102, x64 dla systemu Linux można zainstalować w porządku na Windows 10 Insider Build 14905, wydanej 16 sierpnia 2016 r.
Do pobrania stąd po zaakceptowaniu licencji
C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version" OS Name: Microsoft Windows 10 Pro Insider Preview OS Version: 10.0.14905 N/A Build 14905
Postępowałem zgodnie z instrukcjami tutaj: wikiHow Oracle Java Install
$ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) $ javac -version javac 1.8.0_102
Nie miałem jeszcze okazji naprawdę podkreślić tej instalacji, ale jest to lepsze niż poprzednie zawieszenie.
źródło
To zadziałało dla mnie. Chociaż nie lubię dodawać tych dziwnych repozytoriów. Linuxuprising? Byłoby wspaniale, gdyby Microsoft to naprawił.
źródło
Wiele odpowiedzi zaleca instalację pakietu JDK systemu Linux, mimo że mają one doskonale dobry zestaw JDK systemu Windows. Piękno WSL uniemożliwia wykonywanie takich czynności, ponieważ systemy plików są interoperacyjne. Jeśli weźmiesz pod uwagę rozszerzenia plików (opisane poniżej), będziesz musiał zainstalować oba tylko w niszowych sytuacjach.
Prosta metoda
Możesz to zrobić w bardzo prosty sposób, dodając następujący wiersz kodu do swojego
.bashrc
pliku, zakładając, że zmienne środowiskowe Windows są ustawione poprawnie i WSL jest zainstalowany:# Shared environment variables export JAVA_HOME=/mnt/d/Java/jdk11.0.4_10
Po prostu upewnij się, że zmieniasz katalog, aby wskazywał na folder JDK. W moim przypadku jest w
D:\Java\jdk11.0.4_10
w WSL/mnt/d/Java/jdk11.0.4_10
Ponadto, ponieważ używasz plików binarnych systemu Windows, musisz określić typ pliku podczas uruchamiania z powłoki WSL bash:
Przykład
Dzwonię do Windows JDK z:
CMD
:WSL:
Uwaga WSL wymaga,
.exe
ponieważ jest to plik binarny systemu Windows. Podczas korzystania z dystrybucji Linuksa OpenJDK nie jest wymagane żadne rozszerzenie.źródło
Miałem ten sam problem ale rozwiązuję go jednym poleceniem:
następnie uruchom te 3 polecenia:
sudo apt install default-jre sudo apt install openjdk-11-jre-headless sudo apt install openjdk-8-jre-headless
źródło
Wygląda na to, że problem wystąpił z wersją java oracle, pobrałem wersję openJDK i teraz działa
źródło
może działać w przypadku wersji 14905 Insider Preview, ale zawiesza się w systemie Windows 10 Pro w wersji 14393. Duża część problemu polega na tym, że firma Microsoft używa Ubuntu 14.0.4. Wersja 14.10 lub nowsza prawdopodobnie lepiej obsługiwałaby Javę 8.
źródło