2012-04-17 5 views
1

저는 소프트웨어를 패키징하고 JRE 설치가 어떻게 작동하는지 궁금합니다. 단순히 바이너리를 로컬 시스템에 복사하고 그에 따라 클래스 경로를 설정합니까 아니면 설치 프로그램이 다른 단계를 수행합니까?JRE 설치는 어떻게 작동합니까?

Windows의 경우 JRE 이진 파일은 C:\Program Files\Java\jre7에 저장됩니다.이 폴더를 다른 컴퓨터 (동일한 프로세서 32 비트 또는 64 비트)에 복사하여 JRE를 작동시킬 수 있습니까? 그렇다면 설정해야 할 환경 변수는 무엇입니까?

+0

나는이 모든 것으로부터 하나의 결론을 이끌어 낼 것입니다. JRE를 응용 프로그램에서 사용하는 Sun (현재 Oracle의) 이야기는 부족합니다. 한 가지만있는 경우 Microsoft는 JRE를 배포하고 사용하는 수많은 문제와 비교하여 .NET의 설치 및 참조를 올바르게 처리했습니다. –

+1

* "소프트웨어 패키징 중"* [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info)를 사용하십시오 (2013 년 4 월 이전에이 작업을 완료하려는 경우). JRE에 관해서는 JWS 정보에서 링크 된'deployJava.js'를 사용하십시오. 페이지. –

+0

@AndrewThompson 감사합니다. 오프라인 응용 프로그램을 패키징하고 있습니다. 그러나 이것은 온라인 배포로 옮길 때 도움이 될 것입니다. 아마도 데모 버전 일 것입니다. –

답변

2

나는 JRE 작업을

네, 아무 문제를 만들기 위해 (동일한 프로세서 32 비트 또는 64 비트과) 다른 기계로이 폴더를 복사 할 수 있습니다. .jar 확장자를 두 번 클릭 할 수 있도록 등록하지 않으려는 경우.

그런 경우 ftypeassoc 명령을 확인하십시오. 그들은 그것을 할 수 있습니다. 배치 파일 또는 설치 프로그램에서.

그렇다면 설정해야 할 환경 변수는 무엇입니까?

환경 변수를 설정할 필요가 없습니다.

애플리케이션을 시작할 때 (예 : 배치 파일을 통해) javaw.exe (또는 java.exe)의 경로를 올바르게 입력했는지 확인하십시오.

1

전체 JRE를 하위 디렉토리에 넣을 수 있으며 하위 디렉토리를 기반으로 java.exe를 참조 할 수 있습니다. 이 작업은 다른 제품에서 자주 수행됩니다.

환경 변수를 설정할 필요가 없습니다.

업데이트

이 JAVA_HOME이, PATH 또는 CLASSPATH가 설정되는 글로벌 환경 변수에 의존하지 않는 JRE 툴킷 (메이븐이나 개미와 같은 즉, 무언가)가 아닌 상용 응용 프로그램입니다 경우. 실행했을 때 배치 파일을 만들려면 응용 프로그램의 컨텍스트에서이를 자동으로 설정하면 잘 작동합니다. 그러나 시스템에 설정하는 데 의존하지 마십시오.

누군가가 이것을 사용하여 1.7 버전 또는 1.8 베타 버전을 사용하거나 JRE의 하위 버전을 사용하여 애플리케이션을 중단 한 다음 애플리케이션에 대한 고객 지원 전화를 받게됩니다. 깨어나서 Ant의 문서를 잘못 읽었 기 때문에 JAVA_HOME을 뭔가 어리석은 것으로 바꾸었다.

Ant 또는 Maven과 같이 JDK와 함께 작동하는 도구 세트를 제공하는 경우 툴의 요점 인 설치 한 JRE/JDK를 사용하고 싶을 것입니다.

+0

죄송 합니다만, 이것은 전혀 잘못되었습니다. _Many_ 응용 프로그램은 _CLASSPATH_, _JAVA_HOME_ 및 현재 예상되는 JRE를 가리키는 이전 환경 변수 중 일부를 사용합니다. 바이너리를 설명하고 있다면 _Java_가 작동하지 않는다는 사실은 사실이지만, 변수가 제대로 설치되어 있지 않으면 의존하는 응용 프로그램과 마찬가지로 심하게 혼란 스러울 것입니다. – MrGomez

+0

@MrGomez 필자가 작업 한 하나의 상용 응용 프로그램이나 JAVA_HOME 또는 CLASSPATH 설정은 응용 프로그램이 작동하지 않도록하는 가장 빠른 방법 중 하나이기 때문에 사용하지 않았습니다. 물론 많은 Java 도구와 SDK가 이러한 도구를 사용하지만 많은 응용 프로그램에 대해서는 잘 모릅니다. 심지어 Eclipse는 JAVA_HOME 또는 CLASSPATH를 참조하거나 사용하지 않습니다. –

+0

그러나 많은 Apache 응용 프로그램 (예 : Hadoop 포함)이 그렇게 보입니다. 유감스럽게도 아주 흔한 사례 인 이유 때문에 여기에 유의해야합니다. – MrGomez

0

짧은 버전은 종속되어 있습니다. 그러나 대부분의 경우 바이너리 호환성 및 라이브러리 경로의 제약으로 인해 JRE가 공유 환경에서 작동하기에 충분합니다 (우리가 작업하는 일부 컴퓨터 에서처럼).

Java는 요청을 처리 할 수있는 가상 시스템을 제공하고 시스템에서 소유하고있는 다른 종과 휘파람과 상당히 독립적으로 수행 할 수 있기 때문에 클래스 경로 및 이진 처리에 대한 직관이 유효합니다. 그러나 타사 라이브러리에서 제공하는 일부 OS 패키지에서 제공하는 형식 및 시스템 고유의 경로 및 라이브러리 집합을 필요로하는 라이브러리에서 문제가 발생할 수 있습니다.

간단히 말해 설치 프로그램에서 Java를 설치하면 모든 클래스 경로 세부 정보가 보장되므로 모든 라이브러리, 모든 로깅 기능 및 모든 시스템 관련 정오표가 Andrew Finnell의 지적에 따라 설명됩니다 나가면, still need to set the environment variables manually이됩니다. 가장 엄격한 하위 집합 인 이 대부분의 요구에 대해 (다른 답변 참조)이 필요하지만이 문제 클래스를 경계 할 때 가장 흥미로운 모서리 사례입니다.

+0

Java 설치 프로그램이 PATH, JAVA_HOME 또는 CLASSPATH를 변경하지 않거나 누락 된 경우이를 설정한다는 것을 알고 있습니다. 그것을 시도하고 직접보십시오. 사실, 왜 그렇게하지 않는가에 대한 질문이 있습니다 : http://stackoverflow.com/questions/560797/why-doesnt-the-java-sdk-installer-set-java-home –

+0

@AndrewFinnell 죄송합니다, 당신은 정말로 옳습니다. 나는 JRE의 제 3 자 패킹 (예를 들어, CentOS 용 패킹)과 이것을 혼동했다. 실제로 이것들을 설정하고 유지한다. 바닐라 포장재는 그렇지 않습니다. 나는 나의 대답을 업데이트 할 것이다. – MrGomez

0

인수를 지정하지 않으면 JRE 설치 프로그램이 필요한 2 진 파일과 실행 파일을 설치하지만 JRE 설치를 구성하는 데 필요한 Windows 레지스트리 항목도 작성합니다.

"-static"옵션을 사용하여 설치할 수도 있습니다 (JRE 설치자 documentation 참조).이 경우 파일을 지정된 경로로 복사하지만 다른 작업은 수행하지 않습니다.

그러면 환경 변수가 수동으로 필요합니다. 명령 줄의 경우 가장 일반적인 경로는 PATH, JAVA_HOME 및 CLASSPATH입니다.