Linux 용 Windows 하위 시스템에 Oracle JDK 설치


84

bash를 지원하는 최신 Windows 10 빌드에서 Oracle JDK의 Linux 버전을 사용하려고 할 때 java바이너리 를 호출하려고 할 때마다 프롬프트가 중단되는 문제가 발생합니다 .

java -version멈춘 것처럼 간단한 것도 입력하고 제어를 다시 시작하려면 프로세스를 종료해야합니다.

아무도이 작업을 아직 얻었습니까?


당신이 뭘 하려는지 잘 모르겠습니다. 사용 가능한 JDK의 Windows 버전이 있습니다. Linux 버전을 사용하는 이유는 무엇입니까? 당신이하는 일에 대해 좀 더 말씀해 주시겠습니까?
stdunbar

또한 사무실에있는 우리 중 일부는 Windows 10에 성공적으로 설치를 완료했고 일부는 멈췄다는 사실을 알고 싶습니다.
T Gray

Oracle JDK를 사용해 보지 않았지만 Ubuntu의 자체 openjdk-jre-headless를 설치했으며 제대로 작동합니다. 아마도 Oracle JDK는 헤드에 의존하지만 bash는 CLI 뿐입니 까?
speedogoo apr

1
@Revoman은 github.com/Microsoft/BashOnWindows/issues/49 에서 토론을 확인하십시오 . default-jdk의 문제가 해결 된 것으로 보이며 apt-get을 시도 할 수 있습니다. 또한 / proc에 대해 언급 한 문제는 무엇입니까?
Saurabh 슈라

1
@SaurabhMishra가 지금 가능하므로 선택한 답변을 조정할 수 있습니다.
fieldju

답변:


89

2016 년 12 월 9 일부로 Windows 10 용 Ubuntu Bash에 Java 8을 설치할 수 있으며 @Karl Horton이 정확하다는 점을 명확히하고 싶었습니다.

압축 해제를 설치해야합니다. sudo apt-get install unzip

이 스크립트를 bash for windows 세션의 어딘가에 복사하고 실행 가능하게 만드십시오 (chmod + x filename). vim과 같은 명령 줄 기반 편집기를 사용하지 않는 경우 처리 할 창 줄 끝이 있습니다. dos2unix 또는 선호하는 처리 방법을 사용할 수 있습니다. vim을 사용하여 파일에 붙여 넣습니다.

 #!/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

이제 다음을 수행 할 수 있습니다.

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)                                                

위 스크립트의 링크와 버전은이 글을 읽을 때 최신 버전이 아닐 수 있으므로 http://www.oracle.com/technetwork/java/javase/downloads/index.html로 이동 하여 js가 새 URL을 복사 할 수 있도록 라이센스를 부여해야합니다.


5
unzip이 스크립트에 필요한 것을 추가해야합니다 (기본적으로 설치되어 있지 않기 때문에)
River

sudo: unable to resolve host DESKTOP-6PMR0AI친구 컴퓨터에서 이상한 호스트 문제가 발생 합니다.
samthebest


1
남자, 당신은 자동화의 신입니다. :)
파샤

이 스크립트는 흔들립니다. 오늘은 2020 년 10 월 16 일이며 이제 Windows / Ubuntu 셸에 jdk8이 있습니다.
MAXdB 2010 년

66

2017 년 8 월에는 @ noah-david가 제안한 것처럼 솔루션이 더 간단 해 보입니다.

“WebUpd8”팀 저장소 에서 Oracle JDK 8을 설치할 수있었습니다 .

지침 . 저장소를 추가하려면 :

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

설치하기 위해서:

sudo apt-get install oracle-java8-installer 
sudo apt install oracle-java8-set-default

설치 후

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

7
이것이 이제 최선의 접근 방식이라는 데 동의했습니다. 오라클 java8-설치 먼저 webupd8team의 PPA를 추가 할 필요 :sudo add-apt-repository ppa:webupd8team/java
kaliatech

저장소를 추가하면 "PPA를 추가 할 수 없음 : 'ppa : ~ webupd8team / ubuntu / java'가 반환됩니다. 오류 : '~ webupd8team'사용자 또는 팀이 없습니다."
Tim Holt

@TimHolt는 팀 이름을 잘못 입력했을 때 같은 메시지를 받았습니다.
Loic Lacomme 2018

사용자가 존재하지 않는다는 오류도있어서 삭제되었을 수 있습니다.
jcubic

11
오라클 덕분에,이 것 NOT 차라리 대신이 PPA를 사용 줄루어 또는 Corretto을 사용 - - 그들은 4 월 (16), 2019부터 라이센스 변경으로 더 이상 작업을 참조 linuxuprising.com/2019/04/... 줄루어 설치에 대한 자세한 내용은 SDK
Agraj 2019

44

뭔가 빠진 게 틀림 없어 ... 내가 한 건 :

sudo apt-get update
sudo apt-get install default-jdk

java -version

산출:

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)

5
이것이야하는 방법입니다! 그러나 질문은 Oracle JDK를 요구합니다 . Open JDK를 설치하고 있습니다.
Teodor

2
당신은 오라클 JDK를 입력 sudo를하려면 apt-get을 오라클 - java8-설치 설치
스털링 Bourne의

또한 Linux 용 Windows 하위 시스템에서는 작동하지 않습니다. 또는 Windows 용 Linux 하위 시스템이라고합니다.
Sören

5
방금 sudo apt-get install default-jdkUbuntu 18.04와 함께 Windows 10 18.04를 실행 하고 OpenJDK 11을 설치했습니다.
Steffen Roller

현재 default-jdk는 11로 설정되어 있지만 jdk 8을 설치해야하는 경우 어떻게해야합니까?
Shilan

9

@fieldju에서 제공 한 스크립트를 사용했지만 스크립트가 의존하는 몇 가지 사항을 놓쳤으며 내용을 복사 / 붙여 넣기하면 /rLinux 반환으로 대체해야하는 Windows 줄 끝 / 캐리지 반환 ( )이 발생합니다. 또한 필요한 zip 파일을 먼저 다운로드하고 스크립트와 함께 배치하는 것이 훨씬 더 간단하다는 것을 알았습니다. 내가 한 일의 전체 목록은 다음과 같습니다.

  1. bash입력 sudo apt-get install zip unzip하십시오 압축 해제를 만들기 위해 / 우편은 당신에 설치되어있는 bash콘솔
  2. oracle 웹 사이트 에서 최신 Linux 버전의 Java JDK를 다운로드하고 (64 비트 시스템이 있으므로 "Linux x64"를 선택했습니다) 컴퓨터의 폴더에 저장합니다. bash참고 : 변경하지 마십시오. 스크립트와 함께 작동하는지 확인하기위한 파일 이름
  3. 마지막 zip 파일과 동일한 폴더에 무제한 강도 정책을 별도로 다운로드하여 파일 이름을 그대로 유지하십시오.
  4. 다음 스크립트를 복사하여 메모장에 붙여넣고 java_install_predownloaded.shzip과 함께 동일한 폴더에 저장합니다 .

스크립트:

#!/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

이 코드는 @fieldju에서 수정 된 버전으로 zip이 이미 다운로드되었으며이 파일과 동일한 폴더에 있다고 가정 .sh합니다.

  1. 파일에 Windows 캐리지 리턴이 있기 때문에 교체되었는지 확인해야하므로 bash저장 한 위치 로 이동 java_install_predownloaded.sh하여 다음 명령을 실행하십시오.

    sed 's/^M$//' java_install_predownloaded.sh > java_install_predownloaded_unix.sh

그런 다음 창에 줄 끝이 없는지 확인하기 위해 다음을 실행했습니다.

sed 's/\r$//' java_install_predownloaded_unix.sh > java_install_predownloaded_unix_final.sh

  1. 사람들이 줄을 실행 한 후,라는 파일이 java_install_predownloaded_unix_final.sh그냥 실행해야하므로, 창문 라인 엔딩이없는 우리의 '청소'버전 폴더에있을 것입니다 ./java_install_predownloaded_unix_final.shbash와 마술이 일어날보세요. 안녕하세요 Presto는 이제 Windows의 bash 인스턴스에 Java를 설치했습니다!

BTW, vim 또는 선택한 명령 줄 기반 편집기를 사용하여 스크립트를 만드는 경우 Windows 줄 끝을 추가하지 않습니다. 그러나 메모장이나 다른 창 기반 편집기를 사용하는 경우 모든 항목에 예. 방금 창을 다시 설치하고 dev 환경을 되찾기 위해 내 게시물을 다시 확인해야했습니다. :)
fieldju

6

Bash (Windows 10)에 Oracle JDK 8을 새로 설치하기 위해 수행 한 단계 :

  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. 라이선스 수락

    영상

끝났습니다! 사용중인 Java 버전을 확인 java -version하고 예상 출력은 다음과 같아야합니다.

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)

추신이 글을 쓰는 시점에서 Oracle 9 JDK의 안정적인 버전이 출시되었으므로 위의 4 단계를 조정할 수 있습니다.


참조 : https://poweruphosting.com/blog/install-java-ubuntu/


5

WSL의 Build # 14316에서 JDK8 설치가 현재 작동하지 않는 것 같습니다. 그러나 JDK7을 설치하려고하면 잘 작동했습니다. 현재이 설치의 한계를 탐색하고 있으며 계속 게시됩니다. 아이디어는 여기에서 나왔습니다 : https://github.com/Microsoft/BashOnWindows/issues/196


1
내 생각은 이것이 새로운 JavaFX UI 항목 (Java 8의 기본 런타임)과 관련이 있다는 것입니다. Java 7도 JavaFX를 지원하지만 jar는 기본적으로로드되지 않습니다.
11101101b 2016-08-04

동일한 문제에 직면 한 사람들을위한이 상태 업데이트로 Windows 업데이트로 해결 된 것으로 보입니다. 문제없이 oracle-jdk8을 실행할 수 없습니다.
John Jones

5

Oracle JDK 버전 8u102, Linux 용 x64는 2016 년 8 월 16 일에 출시 된 Windows 10 Insider Build 14905에 설치 가능하다는 것을 확인합니다.

라이센스 승인 후 여기에서 다운로드 가능

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

여기 지침을 따랐습니다 : wikiHow Oracle Java 설치

$ 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

나는 아직이 설치에 대해 정말로 강조 할 기회가 없었지만 이것은 이전 중단보다 낫다.


설치 지침을 시도하지 않았지만 webupd8team / java ppa에서 설치하면 작동하지 않습니다.
철 호미 날레

2

이것은 나를 위해 일했습니다. 하지만 나는 이러한 이상한 저장소를 추가하는 것을 좋아하지 않습니다. Linuxuprising? 마이크로 소프트가 그것을 고치면 좋을 것입니다.

sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java10-installer

2

완벽하게 좋은 Windows JDK가 있더라도 Linux JDK 설치를 권장하는 많은 답변이 있습니다. WSL의 장점은 파일 시스템이 상호 운용 가능하기 때문에 이와 같은 작업을 수행 할 필요가 없다는 것입니다. 파일 확장자를 고려하는 한 (아래 설명), 틈새 상황을 위해 두 가지 모두 설치하면됩니다.

간단한 방법

.bashrcWindows 환경 변수가 올바르게 설정되고 WSL이 설치되어 있다고 가정 하고 다음 코드 줄을 파일에 추가하면됩니다.

# Shared environment variables
export JAVA_HOME=/mnt/d/Java/jdk11.0.4_10

JDK 폴더를 가리 키도록 디렉토리를 변경했는지 확인하십시오. 제 경우에는 D:\Java\jdk11.0.4_10WSL에서/mnt/d/Java/jdk11.0.4_10

또한 Windows 바이너리를 사용하고 있으므로 WSL bash 셸에서 실행할 때 파일 형식을 지정해야합니다.

다음 에서 Windows JDK 호출 :

CMD:

javac MyClass.java
java MyClass

WSL :

javac.exe MyClass.java
java.exe MyClass

참고 WSL은 .exeWindows 바이너리이므로 필요합니다 . OpenJDK의 Linux 배포판을 사용하는 경우 확장이 필요하지 않습니다.


1

나는 같은 문제가 있었지만 하나의 명령으로 해결했습니다.

sudo apt upgrade

그런 다음 다음 3 개의 명령을 실행하십시오.

sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless

0

Java oracle 버전에서 문제가 발생한 것으로 보이며 openJDK 버전을 다운로드했으며 이제 작동합니다.


Hum 실제로 Java 버전에서 왔을 것입니다. Java 7은 작동하지만 Java 8은 작동하지 않습니다.
Julien Richard

0

Insider Preview 빌드 14905에서는 작동 할 수 있지만 Windows 10 Pro 빌드 14393에서는 멈 춥니 다. 문제의 좋은 부분은 Microsoft가 Ubuntu 14.0.4를 사용하고 있다는 것입니다. 14.10 이상은 아마도 Java 8을 더 잘 지원할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.