it-swarm.com.de

Installieren von Oracle JDK auf einem Windows-Subsystem für Linux

Wenn ich versuche, die Linux-Version von Oracle JDK für den neuesten Windows 10-Build zu verwenden, der Bash-Unterstützung bietet, stößt ich beim Versuch, die Binärdatei Java aufzurufen, auf ein Problem mit der hängengebliebenen Eingabeaufforderung.

Die Eingabe von Java -version Hängt, und ich muss den Vorgang abbrechen, um die Kontrolle wieder aufzunehmen.

Hat jemand das schon zum Laufen gebracht?

69
Saurabh Mishra

Ich wollte klarstellen, dass Sie ab dem 9. Dezember 2016 Java 8 auf 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 für Windows-Sitzung und machen Sie es ausführbar (chmod + x Dateiname). Wenn Sie keinen befehlszeilenbasierten Editor wie vim verwenden, müssen Sie sich mit Windows-Zeilenenden befassen. Sie können dos2unix oder Ihre bevorzugte Art, damit umzugehen, verwenden. 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

[email protected]:~$ 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 zu dem Zeitpunkt, an dem Sie dies lesen, veraltet. Gehen Sie also einfach zu http://www.Oracle.com/technetwork/Java/javase/downloads/index) .html Akzeptieren Sie die Lizenz, damit Sie mit ihrem js die neuen URLs kopieren können, und Sie sollten einsatzbereit sein.

63
fieldju

Es scheint im August 2017 die Lösung einfacher zu sein, wie von @ noah-david vorgeschlagen.

Ich konnte Oracle JDK 8 aus dem „WebUpd8“ -Team-Repository installieren.

Anweisungen . So fügen Sie das Repository hinzu:

Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update

Installieren:

Sudo apt-get install Oracle-Java8-installer 
Sudo apt install Oracle-Java8-set-default

Nach der Installation

[email protected]:/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)

[email protected]:/mnt/c/work$ which Java
/usr/bin/Java

[email protected]:/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
61
raisercostin

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)
21
CraftyFella

Ich habe das Skript von @fieldju verwendet, aber er hat einige Dinge übersehen, von denen das Skript abhängt, und das Kopieren/Einfügen der Inhalte hat Windows-Zeilenenden/Zeilenumbrüche (/r) Zur Folge, die durch Linux-Zeilenumbrüche ersetzt werden müssen . Außerdem war es für mich einfacher, die zuerst benötigten Reißverschlüsse herunterzuladen und neben das Skript zu legen. Hier ist eine vollständige Liste dessen, was ich getan habe:

  1. Geben Sie in bashSudo apt-get install Zip unzip Ein, um sicherzustellen, dass unzip/Zip auf Ihrer bash Konsole installiert ist
  2. Laden Sie die neueste Linux-Version des Java JDK von der Oracle-Website (Ich habe ein 64-Bit-System, also habe ich "Linux x64" gewählt) und speichern Sie es in einem Ordner irgendwo auf Ihrem Computer, zu dem Sie in bash gelangen können HINWEIS: Ändern Sie den Dateinamen nicht, um sicherzustellen, dass er mit dem Skript funktioniert
  3. Laden Sie die nlimited Strength Policy separat im selben Ordner wie die letzte Zip-Datei herunter, und stellen Sie dabei sicher, dass Sie den Dateinamen unverändert lassen.
  4. Kopieren Sie das folgende Skript, fügen Sie es in den Editor ein und speichern Sie es als Java_install_predownloaded.sh 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 ZIP-Dateien bereits heruntergeladen wurden und sich im selben Ordner wie diese .sh - Datei befinden

  1. da die Datei die Windows-Wagenrückläufe enthält, müssen Sie sicherstellen, dass sie ersetzt werden. Navigieren Sie in bash zu dem Speicherort von Java_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

  1. Nach dem Ausführen dieser beiden Zeilen befindet sich eine Datei mit dem Namen Java_install_predownloaded_unix_final.sh In dem Ordner, der unsere 'bereinigte' Version ohne die Windows-Zeilenenden ist. Sie müssen also nur ./Java_install_predownloaded_unix_final.sh In bash und beobachten Sie die Magie passieren. Hey Presto, du hast jetzt Java auf deiner Bash-Instanz unter Windows installiert!
8
AndroidNoob

Scheint, als würde die Installation von JDK8 in Build # 14316 von WSL momentan nicht funktionieren. Der Versuch, JDK7 zu installieren, hat mir jedoch gut getan. Erkundung der Grenzen dieser Installation im Moment und wird auf dem Laufenden bleiben. Die Idee kam von hier: https://github.com/Microsoft/BashOnWindows/issues/196

5
Saurabh Mishra

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, installiert werden kann.

Download von hier nach Akzeptieren der Lizenz

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 Chance, diese Installation wirklich zu betonen, aber dies ist besser als die vorherigen Hänge.

5
Karl Horton

Die Schritte, die ich für eine Neuinstallation von Oracle JDK 8 auf meinem Bash (Windows 10) ausgeführt habe:

  1. Sudo apt-get install python-software-properties
  2. Sudo add-apt-repository ppa:webupd8team/Java
  3. Sudo apt-get update
  4. Sudo apt-get install Oracle-Java8-installer
  5. Akzeptiere Lizenzen

    Image

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)

P.S. Zum Zeitpunkt der Veröffentlichung dieser stabilen Version von Oracle 9 JDK konnten Sie wahrscheinlich Schritt 4 weiter oben optimieren.


Referenz: https://poweruphosting.com/blog/install-Java-ubuntu/

4
Keith OYS

Das hat bei mir funktioniert. Ich mag es jedoch nicht, diese seltsamen Repositories hinzuzufügen. Linux-Aufstand? Wäre toll, wenn Microsoft das beheben würde.

Sudo add-apt-repository ppa:linuxuprising/Java
Sudo apt update
Sudo apt install Oracle-Java10-installer
1
Sören

es funktioniert möglicherweise für Insider Preview Build 14905, hängt jedoch bei Windows 10 Pro Build 14393. Ein guter Teil des Problems ist, dass Microsoft Ubuntu 14.0.4 verwendet. 14.10 oder neuer würde wahrscheinlich besser Java 8.

0
Mike Selender

Es scheint, dass das Problem mit Java Oracle-Version aufgetreten ist, ich habe die openJDK-Version heruntergeladen und jetzt funktioniert es

0
Julien Richard