Windows에서 동시에 실행되는 여러 Java 버전


84

Java 5에서 실행되는 몇 개의 응용 프로그램이 있으며 이제 Java 6 기반 응용 프로그램을 가져 오려고합니다. Windows에서 두 Java 버전을 함께 사용할 수 있습니까?

다른 응용 프로그램에 적합한 Java 버전을 설정하는 제어판이 있습니까? 또는 다른 설정 방법이 있습니까? 특정 응용 프로그램을 실행하는 데 사용할 Java 버전은 무엇입니까?

답변:


60

물론 Windows에서 여러 버전의 Java를 사용할 수 있습니다. 그리고 다른 응용 프로그램은 다른 Java 버전을 사용할 수 있습니다. 신청서는 어떻게 시작됩니까? 일반적으로 다음과 같은 배치 파일이 있습니다.

java ...

PATH 변수를 사용하여 Java 실행 파일을 검색합니다. 따라서 Java 5가 PATH에서 첫 번째 인 경우 Java 6 응용 프로그램을 실행하는 데 문제가 있습니다. 그런 다음 특정 Java 버전을 사용하도록 배치 파일을 수정해야합니다 (예 : JAVA6HOME값 으로 환경 변수 를 정의 C:\java\java6(이 디렉토리에 Java 6이 설치된 경우)). 배치 파일 호출을 변경해야합니다.

%JAVA6HOME%\bin\java ...

9
Windows에서 "JRE-6u24-창-에는 i586-s.exe / STATIC = 1", 당신은 자바 설치 (처음 설치) 기존의 교체 설치 자바를 중지 당신은 그것을 즉, 명령 줄에서 실행 STATIC = 1 개 인수를 전달합니다
톰 Chiverton

4
Windows 7 64에서 "jdk-6u27-windows-x64.exe / STATIC = 1"을 실행하면 설치되지 않고 msiexec의 사용법을 보여주는 팝업 창이 나타납니다.
yetimoner 2011 년

7
Oracle의이 문서 에 따르면 실제로는 jdk-...exe STATIC=1. 나는 이것을 시도했고 효과가 있었다.
매트

1
여러분, JDK와 JRE를 혼동하고 있습니다. JRE는 STATIC인수로 사용되지만 JDK도 마찬가지입니까?
Danijel 2013-10-16

1
@reallyinsane 나는 이것을 이해할 수 없다. 초보자에게는 대답이 간단하지 않습니다. 전체 자습서에 연결해 주시겠습니까?
ar plusplus 2015-07-17

12

여러 JRE / JDK 버전을 나란히 설치할 수 있습니다. 더욱이 Sun은 프로그램 파일 아래에 각각 다른 폴더를 생성하기 때문에 특별한 일을 할 필요가 없습니다.

각 애플리케이션에 대해 작동하는 JRE를 확인하는 제어판이 없습니다. 기본적으로 작동하는 JRE는 PATH 환경 변수에서 첫 번째가됩니다. 이를 변경하거나 JAVA_HOME 변수를 변경하거나 특정 cmd / bat 파일을 만들어 각각 경로에 다른 JRE가있는 원하는 응용 프로그램을 시작할 수 있습니다.


2
Windows에서는 이것이 사실이라고 생각하지 않습니다.
cmcginty

@Casey, 어떤 부분을 언급하고 있습니까? 사실이 아닌 이유는 무엇입니까?
Pacerier

1
이 답변 은 문제를 설명합니다. Windows 레지스트리는 java의 기본 버전을 찾는 데 사용됩니다.
binarysubstrate 2015

자바 프로그램이 새로운 버전의 자바에서 잘 실행된다는 것은 사실이지만, 자바 프로그램과 함께 개발 된 버전은 보장 할 수 없습니다. 또한 대부분의 경우 JAVA_HOME 환경 변수를 업데이트해야합니다.
Patrick O'Hara

11

Java 파일을 추적하기 위해 Windows에서 CLASSPATH, JAVA_HOME 및 PATH 아이디어가 서투른 것에 놀랐습니다. 여러 JRE와 이에 만족하는 방법 때문에 여기에 왔습니다. 정보를 역설하지 않고, 나보다 훨씬 더 영리한 사람으로부터 나는이 문제에 대한 그의 기사를 지적하고 싶습니다. 그것은 나를 위해 완벽하게 해결합니다.

기사 작성자 : Ted Neward : 여러 Java 홈 : Java 애플리케이션에 자체 JRE 제공

서버 측 개발 언어로서의 Java가 기하 급수적으로 성장함에 따라 Java 개발 도구, 환경, 프레임 워크 및 확장에서 동등하게 기하 급수적으로 성장했습니다. 안타깝게도 이러한 모든 도구가 동일한 Java VM 설치에서 잘 작동하는 것은 아닙니다. 일부는 Servlet 2.1 호환 환경이 필요하고 일부는 2.2가 필요합니다. 일부는 JDK 1.2 이상에서만 실행되고 일부는 JDK 1.1 (및 그 이상)에서 실행되지 않습니다. 일부는 스윙 1.0 일 이전의 "com.sun.swing"패키지를 필요로하고 다른 일부는 "javax.swing"패키지 이름을 필요로합니다.

더 나쁜 것은, 단 6 개월 전에 Java를 사용하여 개발 된 시스템이 새로운 (아무래도 관련이없는) 애플리케이션 릴리스에 필요한 일부 Java Extension 설치로 인해 갑자기 "작동하지 않을"수 있으므로 기업 내에서도이 문제를 발견 할 수 있습니다. 이로 인해 회사 전체에 Java 응용 프로그램의 배포가 복잡해질 수 있으며, 악명 높은 "Installing-this-app-breaks-my-system"이 시작된 지 5 년이 지난 후 Microsoft의 DLL 체계로 인해 문제가 발생한 이유를 고객이 정확히 궁금해하게됩니다. 그 이상으로 많이 발전하지 않았습니다. (사실, 새로운 .NET 이니셔티브는 방금 설명한 악명 높은 "DLL-Hell"문제를 해결하려고합니다.)

이 문서에서는 특정 애플리케이션이 자체적 인 개인 JRE를 수신하도록 Java 설치를 구성하는 방법을 설명하여 고객 (또는 시스템 관리자)을 미치게하지 않고 여러 Java 환경이 공존 할 수 있도록합니다.


8
나는 위의 대답에 주어진 링크 따윈 찾을 존재하지 않는 생각 여기에 같은 기사 docplayer.net/...
알록 슈라

4

특정 애플리케이션에 대해 JAVA_HOME 환경 변수 설정을 다르게 변경할 수 있어야합니다.

명령 줄 또는 배치 스크립트에서 시작할 때 set JAVA_HOME=C:\...\j2dskXXXJAVA_HOME 환경을 변경하는 데 사용할 수 있습니다 .

PATH올바른 Java 바이너리를 사용하기 위해 환경 변수를 변경해야 할 수도 있습니다 . 이를 위해 set PATH=%JAVA_HOME%\bin;%PATH%.


4

SDKMan을 사용하여 동일한 시스템에 여러 버전의 Java 개발 키트를 설치할 수 있습니다.

SDKMan에 대한 몇 가지 사항은 다음과 같습니다.

  1. SDKMan은 무료로 사용할 수 있으며 오픈 소스 커뮤니티에서 개발했습니다.
  2. SDKMan은 bash 로 작성되었으며 시스템에 curlzip / unzip 프로그램 만 있으면됩니다.
  3. SDKMan은 Java, Groovy, Scala, Kotlin 및 Ceylon과 같은 JVM 용 소프트웨어 개발 키트를 약 29 개 설치할 수 있습니다. Ant, Gradle, Grails, Maven, SBT, Spark, Spring Boot, Vert.x.
  4. SDKMan이 자동으로 처리하기 때문에 _HOMEPATH환경 변수 설정에 대해 걱정할 필요가 없습니다 .

SDKMan은 Mac OSX, Linux, Cygwin, Solaris 및 FreeBSD와 같은 모든 UNIX 기반 플랫폼에서 실행할 수 있으며 다음 명령을 사용하여 설치할 수 있습니다.

$ curl -s "https://get.sdkman.io" | bash  
$ source "$HOME/.sdkman/bin/sdkman-init.sh" 

SDKMan은 bash 로 작성되었으며 시스템에 curlzip / unzip 만 있으면됩니다. Windows 환경 Cygwin 또는 Git Bash를 먼저 설치 한 다음 위의 명령을 실행 하여 Windows 에도 SDKMan을 설치할 수 있습니다 .

Command sdk list java는 SDKMan을 사용하여 설치할 수있는 Java 버전 목록을 제공합니다.

Java 8 설치

$ sdk install java 8.0.201-oracle

Java 9 설치

$ sdk install java 9.0.4-open 

Java 11 설치

$ sdk install java 11.0.2-open

Java 버전 제거

11.0.2-open과 같은 JDK 버전을 제거하려는 경우 다음과 같이 할 수 있습니다.

$ sdk uninstall java 11.0.2-open

현재 Java 버전 전환

모든 터미널 및 애플리케이션에 대해 하나의 버전의 JDK를 활성화하려면 다음 명령을 사용할 수 있습니다.

sdk default java <your-java_version>

위의 명령은 PATH 및 JAVA_HOME 변수도 자동으로 업데이트합니다. 내 기사 How to Install Multiple Versions of Java on the Same Machine에서 더 많은 것을 읽을 수 있습니다 .


1
Windows가 아닌 사용자를위한 것입니다.
gumuruh

@gumuruh SDKMan은 bash로 작성되었으며 시스템에 curl 및 zip / unzip 만 있으면되기 때문에 Windows도 설치할 수 있습니다. Windows 환경 용 Cygwin 또는 Git Bash를 먼저 설치 한 다음 위의 명령을 실행하여 Windows에도 SDKMan을 설치할 수 있습니다.
Naresh Joshi

2

"java -version : 1.5"등으로 Java를 호출하는 것은 올바른 Java 버전으로 실행되어야합니다. (분명히 1.5를 원하는 버전으로 바꿉니다.)

Java가 Windows에 올바르게 설치된 경우 사용하는 레지스트리에 저장된 각 버전에 대한 vm 경로가 있으므로 Windows의 환경 버전을 망칠 필요가 없습니다.


나는 이것이 "공용"JRE에서만 작동한다고 믿습니다. 클라이언트 컴퓨터에서 탁월하며 공용 JRE를 설치하지 않는 개발자에게는 약간의 고통입니다. 배치 파일보다 훨씬 낫습니다.
James Schek

2

또는 링크를 사용하십시오. 실행중인 환경에서 PATH를 업데이트하는 것은 다소 불편하지만 새 버전의 JRE / JDK에 대한 링크를 다시 만드는 것은 쉽습니다. 그래서:

  • 사용하려는 다른 버전의 JDK 설치
  • junction 또는 내장 mklink 명령 으로 해당 폴더에 대한 링크를 만듭니다.
  • PATH를 링크로 설정
  • 다른 버전의 Java를 사용하려는 경우 링크를 삭제하고 새 링크를 만듭니다. PATH / JAVA_HOME / 하드 코딩 된 스크립트는 그대로 유지됩니다.


1

Java Web Start 를 사용하는 경우 (모든 URL, 심지어 로컬 파일 시스템에서도 응용 프로그램을 시작할 수 있음) 응용 프로그램에 적합한 버전을 찾습니다.


0

Java Web Start를 사용하면 여러 JRE를 설치 한 다음 필요한 것을 호출 할 수 있습니다. win에서 .bat 파일을 만들 수 있습니다.

1- 온라인 버전 : < your_JRE_version \ bin \ javaws.exe> ​​-localfile -J-Djnlp.application.href = < .jnlp 파일 .jnlp> -localfile -J "< path_temp_jnlp_file_ .jnlp>"

2- 캐시에서 시작 : < your_JRE_version \ bin \ javaws.exe> ​​-localfile -J "< path_of_your_local_jnlp_file .jnlp>"

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