2009-03-23 6 views
23

"java jar jar_name.jar"을 호출 할 때 사용할 JVM을 지정할 수 있습니까? 내 컴퓨터에 두 개의 JVM이 설치되어 있습니다. JAVA_HOME은 실행 준비가 완료된 코드를 깨뜨릴 수 있으므로 변경할 수 없습니다.Windows에서 명령 행을 통해 JVM 설정

친절 감사

스티븐

답변

44

예 - 단지 명시 적으로 java.exe를 할 수있는 경로를 제공합니다. 예를 들어 : 예를 들어

set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH% 

, 여기에 경로를 기본 JVM, 그 변화를 나타내는 완전한 세션입니다 :

c:\Users\Jon\Test>"c:\Program Files\java\jdk1.6.0_03\bin\java.exe" -version 
java version "1.6.0_03" 
Java(TM) SE Runtime Environment (build 1.6.0_03-b05) 
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing) 

c:\Users\Jon\Test>"c:\Program Files\java\jdk1.6.0_12\bin\java.exe" -version 
java version "1.6.0_12" 
Java(TM) SE Runtime Environment (build 1.6.0_12-b04) 
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing) 

실행중인 명령 쉘이 작업을 수행하는 가장 쉬운 방법은 같은 것이있다

c:\Users\Jon\Test>java -version 
java version "1.6.0_12" 
Java(TM) SE Runtime Environment (build 1.6.0_12-b04) 
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing) 

c:\Users\Jon\Test>set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH% 

c:\Users\Jon\Test>java -version 
java version "1.6.0_03" 
Java(TM) SE Runtime Environment (build 1.6.0_03-b05) 
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing) 

이렇게하면 명시 적으로 JAVA_HOME을 사용하는 프로그램은 변경되지 않습니다.

경로에 잘못된 디렉토리가있는 경우 (존재하지 않는 디렉토리 포함) 오류가 발생하지 않으며 사실상 무시됩니다.

+1

와우, 이것은 명확한 골라냅니다. 나는 알림이 나타 났을 때 대답의 처음 두 줄을 대략 게시하려고했다. –

+0

@ 존 Skeet 어떻게 자바 프로그램에서 이것을 할 수 있습니까? 32 비트 JRE를 사용하여 .jar를 실행하고 싶습니다. Java 코드에서 새 프로세스의 JRE 경로를 설정할 수 있습니까? –

+0

@Utku : 프로세스를 만들면 실행 파일로 전체 경로를 전달할 수 있습니다 ... –

2

일반적인 Windows InstallShield 메커니즘을 사용하여 system32에있는 JVM 찾기 EXE를 사용하여 설치 한 Sun VM이라고 가정하고 명령 줄 인수를 통해이 작업을 수행 할 수 있어야합니다.

유형에 대해 java -help을 입력하십시오. 특히, 참조 :

-version:<value> 
       require the specified version to run 
-jre-restrict-search | -jre-no-restrict-search 
       include/exclude user private JREs in the version search 
+0

+1, 자바 1.6 필요 – RealHowTo

0

예 종종 3 개 이상의 JVM이 설치되어 있어야합니다. 예를 들어 JRE가 JRE의 JDK 버전과 약간 다른 경우가 있습니다. 나는 그것이 간단 생각

@echo off 
setlocal 
@rem _________________________ 
@rem 
@set JAVA_HOME=b:\lang\java\jdk\v1.6\u45\x64\jre 
@rem 
@set JAVA_EXE=%JAVA_HOME%\bin\java 
@set VER=test 
@set WRK=%~d0%~p0%VER% 
@rem 
@pushd %WRK% 
cd 
@echo. 
@echo %JAVA_EXE% -jar %WRK%\openmrs-standalone.jar 
     %JAVA_EXE% -jar %WRK%\openmrs-standalone.jar 
@rem 
@rem _________________________ 
popd 
endlocal 
@exit /b 

'포장'의 비트에 대한 Windows에서 솔루션으로 이동 내

이 같은 것입니다. 가장 중요한 것은 setlocal 및 endlocal 앱이 실행되는 다른 프로그램이 있더라도 앱에 "개인 환경"을 부여하는 것입니다. 당신은 JVM의 2 설치가있는 경우

0

리눅스

sudo update-alternatives --config java 
1

와 함께이 함께보십시오. 버전을 먼저 배치하십시오. Linux : export PATH =/usr/lib/jvm/java-8-oracle/bin : $ PATH

이렇게하면 모호성이 제거됩니다.

관련 문제