Beim Versuch, die Linux-Version von Oracle JDK auf dem neuesten Windows 10-Build mit Unterstützung für Bash zu verwenden, tritt ein Problem auf, bei dem die Eingabeaufforderung hängen bleibt, wenn versucht wird, die java
Binärdatei aufzurufen .
Wenn java -version
ich etwas so Einfaches wie " Hänge" schreibe, muss ich den Vorgang beenden, um die Kontrolle wieder aufzunehmen.
Hat das schon jemand zum Laufen gebracht?
java
linux
windows
windows-subsystem-for-linux
Saurabh Mishra
quelle
quelle
Antworten:
Ich wollte klarstellen, dass Sie ab dem 9. Dezember 2016 mit Sicherheit Java 8 unter Ubuntu Bash für Windows 10 installieren können und dass @Karl Horton korrekt ist.
Sie müssen unzip installieren
sudo apt-get install unzip
Kopieren Sie dieses Skript irgendwo in Ihre Bash for Windows-Sitzung und machen Sie es ausführbar (chmod + x Dateiname). Wenn Sie keinen befehlszeilenbasierten Editor wie vim verwenden, müssen Sie mit Windows-Zeilenenden umgehen. Sie können dos2unix oder Ihre bevorzugte Methode verwenden, um damit umzugehen. Ich füge es einfach mit vim in eine Datei ein.
#!/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
Und jetzt kann ich Folgendes tun
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)
Die Links und Versionen im obigen Skript sind wahrscheinlich zum Zeitpunkt des Lesens veraltet. Gehen Sie also einfach zu http://www.oracle.com/technetwork/java/javase/downloads/index.html und akzeptieren Sie die Lizenz, so dass ihre js Sie die neuen URLs kopieren können und Sie sollten bereit sein zu gehen.
quelle
unzip
für dieses Skript erforderlich ist (da es nicht standardmäßig installiert ist)sudo: unable to resolve host DESKTOP-6PMR0AI
auf einem Computer eines Freundes bekommen.Es scheint, dass im August 2017 die Lösung einfacher ist, wie von @ noah-david vorgeschlagen.
Ich konnte Oracle JDK 8 aus dem Team-Repository „WebUpd8“ installieren .
Anleitung . So fügen Sie das Repository hinzu:
Installieren:
sudo apt-get install oracle-java8-installer sudo apt install oracle-java8-set-default
Nach der Installation
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
quelle
sudo add-apt-repository ppa:webupd8team/java
Ich muss etwas vermissen ... alles was ich getan habe war:
sudo apt-get update sudo apt-get install default-jdk java -version
Ausgabe:
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)
quelle
sudo apt-get install default-jdk
Windows 10 18.04 mit Ubuntu 18.04 ausgeführt und OpenJDK 11 installiert.Ich habe das von @fieldju gegebene Skript verwendet, aber er hat einige Dinge übersehen, von denen das Skript abhängt, und auch das Kopieren / Einfügen des Inhalts führt dazu, dass Windows-Zeilenenden / Wagenrückläufe (
/r
) durch Linux-Rückgaben ersetzt werden müssen. Außerdem fand ich es viel einfacher, zuerst die benötigten Reißverschlüsse herunterzuladen und neben das Skript zu stellen. Hier ist eine vollständige Liste meiner Aktivitäten:bash
Geben Siesudo apt-get install zip unzip
sicher unzip machen / zip auf Ihrer installiertenbash
Konsolebash
HINWEIS: Nicht ändern können den Dateinamen, um sicherzustellen, dass er mit dem Skript funktioniertjava_install_predownloaded.sh
in den Editor ein und speichern Sie es im selben Ordner neben den Reißverschlüssen:Skript:
#!/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
Dieser Code ist eine modifizierte Version von @fieldju, bei der davon ausgegangen wird, dass die Zips bereits heruntergeladen wurden und sich im selben Ordner wie diese
.sh
Datei befindenDa die Datei über die Windows-Wagenrückläufe verfügt, müssen Sie sicherstellen, dass sie ersetzt werden.
bash
Navigieren Sie daher zu dem Speicherortjava_install_predownloaded.sh
und führen Sie den folgenden Befehl aus:sed 's/^M$//' java_install_predownloaded.sh > java_install_predownloaded_unix.sh
Ich habe dann auch Folgendes ausgeführt, um sicherzustellen, dass es definitiv keine Zeilenenden von Windows gibt:
sed 's/\r$//' java_install_predownloaded_unix.sh > java_install_predownloaded_unix_final.sh
java_install_predownloaded_unix_final.sh
wird in dem Ordner sein , die unsere ‚gereinigt‘ -Version ohne die Fenster Zeilenenden ist, so dass Sie nur ausführen müssen./java_install_predownloaded_unix_final.sh
inbash
und beobachten Sie die Magie geschehen. Hey Presto, du hast jetzt Java auf deiner Bash-Instanz unter Windows installiert!quelle
Die Schritte, die ich für eine Neuinstallation von Oracle JDK 8 auf meinem Bash (Windows 10) ausgeführt habe:
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
Lizenzen akzeptieren
Sie sind fertig! Überprüfen Sie Ihre Java-Version mit
java -version
und die erwartete Ausgabe sollte ungefähr so aussehen: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 Zum Zeitpunkt des Schreibens dieser stabilen Version von Oracle 9 JDK konnten Sie wahrscheinlich Schritt 4 oben optimieren.
Referenz: https://poweruphosting.com/blog/install-java-ubuntu/
quelle
Scheint, dass die Installation von JDK8 auf Build # 14316 der WSL derzeit nicht funktioniert. Aber der Versuch, JDK7 zu installieren, hat für mich gut funktioniert. Erkunden Sie die Grenzen dieser Installation im Moment und bleiben Sie auf dem Laufenden. Die Idee kam von hier: https://github.com/Microsoft/BashOnWindows/issues/196
quelle
Ich bestätige hier, dass Oracle JDK Version 8u102, x64 für Linux unter Windows 10 Insider Build 14905, veröffentlicht am 16. August 2016, in Ordnung installiert werden kann.
Hier kann nach Annahme der Lizenz heruntergeladen werden
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
Ich habe die Anweisungen hier befolgt : 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
Ich hatte noch keine Gelegenheit, diese Installation wirklich zu betonen, aber dies ist besser als die vorherigen Hänge.
quelle
Das hat bei mir funktioniert. Ich mag es jedoch nicht, diese seltsamen Repositories hinzuzufügen. Linuxuprising? Wäre toll, wenn Microsoft das beheben würde.
quelle
In vielen Antworten wird empfohlen, das Linux-JDK zu installieren, obwohl es über ein perfektes Windows-JDK verfügt. Das Schöne an WSL ist, dass Sie solche Dinge nicht tun müssen, da die Dateisysteme interoperabel sind. Solange Sie die Dateierweiterungen berücksichtigen (siehe unten), müssten Sie beide nur für Nischensituationen installieren.
Einfache Methode
Sie können dies ganz einfach tun
.bashrc
, indem Sie Ihrer Datei die folgende Codezeile hinzufügen , vorausgesetzt, Ihre Windows-Umgebungsvariablen sind korrekt eingestellt und WSL ist installiert:# Shared environment variables export JAVA_HOME=/mnt/d/Java/jdk11.0.4_10
Stellen Sie einfach sicher, dass Sie das Verzeichnis so ändern, dass es auf Ihren JDK-Ordner verweist. In meinem Fall ist es in
D:\Java\jdk11.0.4_10
der WSL/mnt/d/Java/jdk11.0.4_10
Da Sie Windows-Binärdateien verwenden, müssen Sie außerdem den Dateityp angeben, wenn Sie von einer WSL-Bash-Shell ausgeführt werden:
Beispiel
Aufrufen von Windows JDK von:
CMD
::WSL:
Hinweis WSL erfordert,
.exe
da es sich um eine Windows-Binärdatei handelt. Bei Verwendung der Linux-Distribution des OpenJDK ist keine Erweiterung erforderlich.quelle
Ich hatte das gleiche Problem, aber ich löse es mit einem Befehl:
Führen Sie dann diese 3 Befehle aus:
sudo apt install default-jre sudo apt install openjdk-11-jre-headless sudo apt install openjdk-8-jre-headless
quelle
Es scheint, dass das Problem mit der Java Oracle-Version aufgetreten ist. Ich habe die openJDK-Version heruntergeladen und jetzt funktioniert es
quelle
Es funktioniert möglicherweise für Insider Preview Build 14905, hängt jedoch von Windows 10 Pro Build 14393 ab. Ein guter Teil des Problems besteht darin, dass Microsoft Ubuntu 14.0.4 verwendet. 14.10 oder höher würde Java 8 wahrscheinlich besser unterstützen.
quelle