확인 - windows java ant




Ant는 'java.home'을 어디에 설정 했는가?(틀린가?) '/ jre'를 추가 할 예정인가? (2)

좋아, CentOS 6.3에서 Ant 버전 1.7.1 (기본 설치)을 사용하고 있습니다.

[[email protected]-ingyhere ~]$ ant -version
Apache Ant version 1.7.1 compiled on August 24 2010
[[email protected]-ingyhere ~]$ cat /etc/*-release
CentOS release 6.3 (Final)

나는 JAVA_HOME 설정하고 ant 실행한다 :

[[email protected]-ingyhere ~]$ export JAVA_HOME=/usr/java/jdk1.7.0_17 ; echo $JAVA_HOME ;
/usr/java/jdk1.7.0_17
[[email protected]-ingyhere ~]$ ant -diagnostics | grep java\\.home
java.home : /usr/java/jdk1.7.0_17/jre

이것은 훨씬 더 재미 있습니다.

[[email protected]-ingyhere ~]$ export JAVA_HOME=/a/fools/folly ; echo $JAVA_HOME ; ant -diagnostics | grep java\\.home
/a/fools/folly
java.home : /usr/java/jdk1.7.0_17/jre
[[email protected]-ingyhere ~]$  env | grep JAVA
JAVA_HOME=/a/fools/folly 

그래서, 나는 한 가지를 얻었습니다 - 분명히 오라클의 클래스 시스템 용 Java 7 Javadoc 은 "Java 설치 디렉토리"로 java.home 시스템 속성을 설명하는 곳에 잘못되었습니다! 나는 System Properties를위한 Java (TM) Tutorialsjava.home System Property를 "JRE (Java Runtime Environment)를위한 설치 디렉토리"로 설명하기 때문에 그것을 알고있다. 즉, 환경의 JAVA_HOME 이 JVM 시스템 특성의 java.home 과 반드시 ​​같지는 않습니다. (그것은 무엇을 설정합니까?!)

질문 : Ant 는 어디서 어떻게 시스템 속성 java.home 가져 java.home 설정합니까?


d : \ jdk의 Windows 상자에 JDK를 설치했지만 -XshowSettings를 사용하여 d : \ jdk \ bin \ java.exe를 실행하면 c : \에 시스템 전체 JRE를 가리키는 내장 java.home이 표시되었습니다. 프로그램 Files \ Java \ jre1.8.0_91. 개인 JRE와 공용 JRE의 역할을 이해하지 않고 d : \ jdk \ jre를 삭제하여 설치가 손상된 것 같습니다.


실제로 JVM 내부 질문

Ant는 단지 java.lang.System 속성을 출력하고 있기 때문에 (위의 원래 게시물의 주석 참조), 이것은 실제로 JVM 질문입니다. Java HotSpot Virtual Machine 은 핵심 인터프리터입니다. 코드는 hg.openjdk.java.net 에서 온라인으로 볼 수 있습니다.

HotSpot (os_linux.cpp)에 대한 C ++ 코드의 309 행 에는 os 클래스에 init_system_properties_values() 메소드가 있습니다. Java 사용자가 "java.home"으로 보는 것으로 끝나는 home_path 라는 변수의 위치를 ​​알아낼 수있는 약간의 경험적 방법을 사용합니다. 이 코드의 주석은 '<java_home> / jre'가 "java.home"(JDK 설치의 경우)에 대한 java.lang.System 속성 값으로 형식적으로 지정되고 있음을 나타냅니다.





environment-variables