bash를 지원하는 최신 Windows 10 빌드에서 Oracle JDK의 Linux 버전을 사용하려고 할 때 java
바이너리 를 호출하려고 할 때마다 프롬프트가 중단되는 문제가 발생합니다 .
java -version
멈춘 것처럼 간단한 것도 입력하고 제어를 다시 시작하려면 프로세스를 종료해야합니다.
아무도이 작업을 아직 얻었습니까?
bash를 지원하는 최신 Windows 10 빌드에서 Oracle JDK의 Linux 버전을 사용하려고 할 때 java
바이너리 를 호출하려고 할 때마다 프롬프트가 중단되는 문제가 발생합니다 .
java -version
멈춘 것처럼 간단한 것도 입력하고 제어를 다시 시작하려면 프로세스를 종료해야합니다.
아무도이 작업을 아직 얻었습니까?
답변:
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을 복사 할 수 있도록 라이센스를 부여해야합니다.
unzip
이 스크립트에 필요한 것을 추가해야합니다 (기본적으로 설치되어 있지 않기 때문에)
sudo: unable to resolve host DESKTOP-6PMR0AI
친구 컴퓨터에서 이상한 호스트 문제가 발생 합니다.
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
sudo add-apt-repository ppa:webupd8team/java
뭔가 빠진 게 틀림 없어 ... 내가 한 건 :
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)
sudo apt-get install default-jdk
Ubuntu 18.04와 함께 Windows 10 18.04를 실행 하고 OpenJDK 11을 설치했습니다.
@fieldju에서 제공 한 스크립트를 사용했지만 스크립트가 의존하는 몇 가지 사항을 놓쳤으며 내용을 복사 / 붙여 넣기하면 /r
Linux 반환으로 대체해야하는 Windows 줄 끝 / 캐리지 반환 ( )이 발생합니다. 또한 필요한 zip 파일을 먼저 다운로드하고 스크립트와 함께 배치하는 것이 훨씬 더 간단하다는 것을 알았습니다. 내가 한 일의 전체 목록은 다음과 같습니다.
bash
입력 sudo apt-get install zip unzip
하십시오 압축 해제를 만들기 위해 / 우편은 당신에 설치되어있는 bash
콘솔bash
참고 : 변경하지 마십시오. 스크립트와 함께 작동하는지 확인하기위한 파일 이름java_install_predownloaded.sh
zip과 함께 동일한 폴더에 저장합니다 .스크립트:
#!/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
합니다.
파일에 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
java_install_predownloaded_unix_final.sh
그냥 실행해야하므로, 창문 라인 엔딩이없는 우리의 '청소'버전 폴더에있을 것입니다 ./java_install_predownloaded_unix_final.sh
에 bash
와 마술이 일어날보세요. 안녕하세요 Presto는 이제 Windows의 bash 인스턴스에 Java를 설치했습니다!Bash (Windows 10)에 Oracle JDK 8을 새로 설치하기 위해 수행 한 단계 :
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
라이선스 수락
끝났습니다! 사용중인 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 단계를 조정할 수 있습니다.
WSL의 Build # 14316에서 JDK8 설치가 현재 작동하지 않는 것 같습니다. 그러나 JDK7을 설치하려고하면 잘 작동했습니다. 현재이 설치의 한계를 탐색하고 있으며 계속 게시됩니다. 아이디어는 여기에서 나왔습니다 : https://github.com/Microsoft/BashOnWindows/issues/196
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
나는 아직이 설치에 대해 정말로 강조 할 기회가 없었지만 이것은 이전 중단보다 낫다.
완벽하게 좋은 Windows JDK가 있더라도 Linux JDK 설치를 권장하는 많은 답변이 있습니다. WSL의 장점은 파일 시스템이 상호 운용 가능하기 때문에 이와 같은 작업을 수행 할 필요가 없다는 것입니다. 파일 확장자를 고려하는 한 (아래 설명), 틈새 상황을 위해 두 가지 모두 설치하면됩니다.
.bashrc
Windows 환경 변수가 올바르게 설정되고 WSL이 설치되어 있다고 가정 하고 다음 코드 줄을 파일에 추가하면됩니다.
# Shared environment variables
export JAVA_HOME=/mnt/d/Java/jdk11.0.4_10
JDK 폴더를 가리 키도록 디렉토리를 변경했는지 확인하십시오. 제 경우에는 D:\Java\jdk11.0.4_10
WSL에서/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은 .exe
Windows 바이너리이므로 필요합니다 . OpenJDK의 Linux 배포판을 사용하는 경우 확장이 필요하지 않습니다.
Java oracle 버전에서 문제가 발생한 것으로 보이며 openJDK 버전을 다운로드했으며 이제 작동합니다.