Intellij Idea Elasticsearch 소스 컴파일

Elasticsearch 원본을 읽고 맞춤형 기능을 사용하려면 Elasticsearch를 컴파일해야 합니다.본고는 인텔리제이 아이디어로 Elasticsearch 원본 패키지를 컴파일하는 방법을 소개하고자 합니다.

1. 소프트웨어 환경


Intellij Idea: 017.1 버전
Elasticsearch 소스 버전: 2.3.3
JDK:jdk1.7.0_80.jdk OS:OS X Yosemite 10.10.3

2. Elasticsearch 원본 다운로드


Elasticsearch의 발행 버전, 즉 사용자가 사용하는 버전은 Elastic 홈페이지에서 다운로드하고 원본 패키지는github에서 다운로드하며 다운로드 주소:https://github.com/elastic/elasticsearch/releases, 다음 그림과 같이 Elasticsearch 2.3.3 버전을 다운로드하고 tar를 선택합니다.gz 형식.
로컬로 압축을 풀면 이곳의 경로는 /Users/bee/Documents/es/elasticsearch-2.3.3입니다. 압축을 풀면 elasticsearch-2.3.3 디렉터리에 있는 코어 폴더가 원본 패키지의 위치입니다. 아래 그림과 같습니다.

3. config 디렉터리 추가


실행 버전의elasticsearch-2.3.3 디렉터리에 있는config 파일(elasticsearch.yml가 있는 위치)을 /Users/bee/Documents/es/elasticsearch-2.3.3/core 디렉터리에 복사합니다. config 디렉터리에 있는 파일은 다음과 같습니다.
elasticsearch-2.3.3
   --config       --elasticsearch.yml       --logging.yml       --scripts

넷째, Intellij Idea 소스 가져오기


Intellij Idea를 열고 Import Project를 선택합니다.
elasticsearch-2.3.3/core가 있는 경로를 선택하십시오. 다음.
기본pom, 다음을 선택하십시오.
기본 구성을 다음 단계로 선택합니다.
JDK 버전을 선택하십시오. 여러 JDK가 있으면 여기에서 선택할 수 있습니다.
프로젝트 이름을 다음 단계로 설정합니다.
프로젝트 가져오기가 완료되면 src/main/java 디렉터리에서 org.elasticsearch.bootstrap 패키지 아래elasticsearch.java를 찾을 수 있습니다. 이때 단독으로 실행하면 오류가 발생합니다. 실행하기 전에 elasticsearch를 설정합니다.java의 매개 변수, Edit Eonfiguration(메뉴 경로 Run->Edit Eonfiguration)을 클릭합니다.
구성 매개 변수: VM Options에 -Des 추가.path.홈 경로는 ES 소스 패키지 위치입니다.
-Des.path.home=/Users/bee/Documents/es/elasticsearch-2.3.3/core

Program arguments 에 추가
start

OK를 누르면elasticsearch를 실행합니다.java.
만약 모든 것이 순조롭다면, 콘솔에서 아래의 출력을 볼 수 있습니다.
방문http://localhost:9200/:
이로써 Intellij Idea는 Elasticsearch 원본을 컴파일했습니다.

5. JDK 버전 정보


처음 컴파일할 때 사용한 것은 jdk1.8.0_112.jdk입니다. 다음과 같은 오류가 발생하여 최신으로 바꾸면 jdk1.8.0_121.jdk 여전히 안 됩니다. 나중에 맥판 JDK의 버그인 것을 발견하여 jdk1.7.0_80.jdk 모든 OK로 바꾸었습니다.
objc[413]: Class JavaLaunchHelper is implemented in both
/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java and 
/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/lib/libinstrument.dylib. 
One of the two will be used. Which one is undefined.

참고 자료


http://stackoverflow.com/questions/23590613/java-8-class-javalaunchhelper-is-implemented-in-both

좋은 웹페이지 즐겨찾기