슬 래 그 Elastic Search 소스 분석 - 환경 구축

26104 단어 elasticsearch자바
나 를 주목 하 다
옮 겨 싣 기 원본 주 소 는 다음 과 같 습 니 다.http://www.54tianzhisheng.cn/2018/08/05/es-code01/
소프트웨어 환경
1. Intellij Idea: 2018.2 버 전
2. Elasticsearch 소스 버 전: 6.3.2
3、JDK:10.0.2
4. Gradle: 4.5 이상 버 전 권장
5、Macbook Pro 2017
ElasticSearch 설치
가다https://www.elastic.co/downlo... 여기 서 Elastic Search 6.3.2 버 전 을 찾 아 다운로드 한 후 압축 을 풀 면 됩 니 다.(메모: 이 버 전 은 아래 원본 버 전과 일치 해 야 합 니 다)
원본 코드 다운로드
... 에서https://github.com/elastic/el... 해당 버 전의 소스 코드 를 다운로드 합 니 다. git clone 을 사용 하 는 것 을 권장 합 니 다. 그러면 다음 에 Elastic Search 의 다른 버 전 으로 마음대로 전환 할 수 있 습 니 다.
git clone [email protected]:elastic/elasticsearch.git

우 리 는 어떤 버 전이 있 는 지 살 펴 보 자.
git tag

현재 원본 버 전의 최신 버 전의 안정 판 을 찾 았 습 니 다: v 6.3.2
이 버 전 으로 전환:
git checkout v6.3.2

그래서 이 안정 버 전 으로 전환 할 수 있 습 니 다.이제 IDEA / Eclipse 에 직접 가 져 오지 마 세 요.
컴 파일
GitHub 는 IDEA / Eclipse 를 가 져 오 는 방법 을 설명 합 니 다.
JDK 10 is required to build Elasticsearch. You must have a JDK 10 installation with the environment variable JAVA_HOME referencing the path to Java home for your JDK 10 installation. By default, tests use the same runtime as JAVA_HOME. However, since Elasticsearch, supports JDK 8 the build supports compiling with JDK 10 and testing on a JDK 8 runtime; to do this, set RUNTIME_JAVA_HOME pointing to the Java home of a JDK 8 installation. Note that this mechanism can be used to test against other JDKs as well, this is not only limited to JDK 8.

Note: It is also required to have JAVA7_HOME, JAVA8_HOME and JAVA10_HOME available so that the tests can pass.

Warning: do not use sdkman for Java installations which do not have proper jrunscript for jdk distributions.

Elasticsearch uses the Gradle wrapper for its build. You can execute Gradle using the wrapper via the gradlew script in the root of the repository.

Configuring IDEs And Running Tests
Eclipse users can automatically configure their IDE: ./gradlew eclipse then File: Import: Existing Projects into Workspace. Select the option Search for nested projects. Additionally you will want to ensure that Eclipse is using 2048m of heap by modifying eclipse.ini accordingly to avoid GC overhead errors.

IntelliJ users can automatically configure their IDE: ./gradlew idea then File->New Project From Existing Sources. Point to the root of the source directory, select Import project from external model->Gradle, enable Use auto-import. In order to run tests directly from IDEA 2017.2 and above, it is required to disable the IDEA run launcher in order to avoid idea_rt.jar causing "jar hell". This can be achieved by adding the -Didea.no.launcher=true JVM option. Alternatively, idea.no.launcher=true can be set in the idea.properties file which can be accessed under Help > Edit Custom Properties (this will require a restart of IDEA). For IDEA 2017.3 and above, in addition to the JVM option, you will need to go to Run->Edit Configurations->...->Defaults->JUnit and verify that the Shorten command line setting is set to user-local default: none. You may also need to remove ant-javafx.jar from your classpath if that is reported as a source of jar hell.

To run an instance of elasticsearch from the source code run ./gradlew run

The Elasticsearch codebase makes heavy use of Java asserts and the test runner requires that assertions be enabled within the JVM. This can be accomplished by passing the flag -ea to the JVM on startup.

For IntelliJ, go to Run->Edit Configurations...->Defaults->JUnit->VM options and input -ea.

For Eclipse, go to Preferences->Java->Installed JREs and add -ea to VM Arguments.

Elasticsearch 를 컴 파일 하 는 방법 과 ide 에서 환경 을 설정 하 는 방법 에 대해 말씀 드 렸 습 니 다.다음 단 계 를 말씀 드 리 겠 습 니 다.
1. 우리 가 다운로드 한 Elasticsearch 루트 디 렉 터 리 에서 명령 을 실행 합 니 다: (이미 작 성 된 스 크 립 트 gradlew 를 실행 합 니 다)
./gradlew idea

버 전과 제 가 일치 하 는 것 을 주의 하 십시오. 이 른 버 전 은 스 크 립 트 를 실행 하지 않 았 을 수도 있 습 니 다. gradle idea 명령 을 실행 해 야 합 니 다.
마지막 결 과 는 다음 과 같다.
2. IDEA 가 져 오기
아이디어 File -> New Project From Existing Sources 에서 다운로드 한 Elasticsearch 루트 디 렉 터 리 를 선택 하고 open 를 누 른 다음 Import project from external model -> Gradle 을 선택 하고 Use auto-import 를 선택 하면 됩 니 다.
가 져 온 후에 gradle 은 다시 컴 파일 할 것 입 니 다. 잠시 기 다 려 야 합 니 다. 다 된 후에 다음 과 같 습 니 다.
운행 하 다.
server 모듈 에 있 는 Elasticsearch 클래스: org. elasticsearch. boottstrap. Elasticsearch 를 열 고 main 함 수 를 실행 합 니 다.
1. 오 류 는 다음 과 같다.
ERROR: the system property [es.path.conf] must be set

우리 가 실행 하고 있 는 설정 vm options 는 다음 과 같 습 니 다.
-Des.path.conf="/usr/local/elasticsearch-6.3.2/config"

2. 다시 운행 하면 다음 과 같이 잘못 보고 합 니 다.
Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
    at org.elasticsearch.env.Environment.(Environment.java:103)
    at org.elasticsearch.env.Environment.(Environment.java:94)
    at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:86)
    at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:95)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86)

우리 가 실행 하고 있 는 설정 vm options 는 다음 과 같 습 니 다.
-Des.path.home="/usr/local/elasticsearch-6.3.2"

3. 다시 운행 하면 다음 과 같이 잘못 보고 합 니 다.
2018-08-01 09:38:03,974 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:371)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1805)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:318)
    at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
    at org.apache.logging.log4j.core.jmx.Server.register(Server.java:389)
    at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:167)
    at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:140)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:556)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:261)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:206)
    at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:220)
    at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:197)
    at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:171)
    at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:140)
    at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:119)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:294)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86)

실행 중인 설정 vm options 는 다음 과 같 습 니 다.
-Dlog4j2.disable.jmx=true

4. 만약 에 JDK 1.8 로 컴 파일 한 것 이 라면 이 오 류 를 보고 할 것 입 니 다.
[2018-08-01T11:02:24,663][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: jar hell!
class: jdk.packager.services.UserJvmOptionsService
jar1: /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/lib/ant-javafx.jar
jar2: /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/lib/packager.jar
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[main/:?]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[main/:?]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[main/:?]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[main/:?]
Caused by: java.lang.IllegalStateException: jar hell!
class: jdk.packager.services.UserJvmOptionsService
jar1: /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/lib/ant-javafx.jar
jar2: /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/lib/packager.jar
    at org.elasticsearch.bootstrap.JarHell.checkClass(JarHell.java:273) ~[main/:?]
    at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:190) ~[main/:?]
    at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:86) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:198) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[main/:?]
    ... 6 more
2018-08-01 11:02:24,713 Thread-2 ERROR No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging.

두 가지 해결 방법 은 바로...
(1), 소스 코드 에 사 용 된 JarHell.checkJarHell 코드 를 모두 주석 하면 됩 니 다.
(2) 、 JDK 10 컴 파일
두 가지 방법 을 나 는 모두 시험 해 보 았 으 니, 직접 두 번 째 방안 을 바 꾸 는 것 을 건의 합 니 다!
5. 그리고 다시 시작 하면 문제 가 없 을 것 입 니 다. 다음 로그 가 나타 납 니 다. (인터넷 에 많은 사람들 이 이 단계 에 있 었 으 면 좋 겠 습 니 다)
[elasticsearch] Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[elasticsearch] [2018-08-04T16:42:26,073][INFO ][o.e.n.Node               ] [node-0] initializing ...
[elasticsearch] [2018-08-04T16:42:26,185][INFO ][o.e.e.NodeEnvironment    ] [node-0] using [1] data paths, mounts [[/ (/dev/disk1s1)]], net usable_space [109.3gb], net total_space [233.4gb], types [apfs]
[elasticsearch] [2018-08-04T16:42:26,187][INFO ][o.e.e.NodeEnvironment    ] [node-0] heap size [494.9mb], compressed ordinary object pointers [true]
[elasticsearch] [2018-08-04T16:42:26,190][INFO ][o.e.n.Node               ] [node-0] node name [node-0], node ID [o9SuMXP-R7uvJLtE3h37Rw]
[elasticsearch] [2018-08-04T16:42:26,191][INFO ][o.e.n.Node               ] [node-0] version[6.3.2-SNAPSHOT], pid[61499], build[default/zip/053779d/2018-08-04T08:39:59.714654Z], OS[Mac OS X/10.13.5/x86_64], JVM["Oracle Corporation"/Java HotSpot(TM) 64-Bit Server VM/10.0.2/10.0.2+13]
[elasticsearch] [2018-08-04T16:42:26,191][INFO ][o.e.n.Node               ] [node-0] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/var/folders/mb/3vpbvkkx13l2jmpt2kmmt0fr0000gn/T/elasticsearch.URRKTybG, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -XX:UseAVX=2, -ea, -esa, -Xms512m, -Xmx512m, -Des.path.home=/Users/zhisheng/IdeaProjects/github/elasticsearch/distribution/build/cluster/run node0/elasticsearch-6.3.2-SNAPSHOT, -Des.path.conf=/Users/zhisheng/IdeaProjects/github/elasticsearch/distribution/build/cluster/run node0/elasticsearch-6.3.2-SNAPSHOT/config, -Des.distribution.flavor=default, -Des.distribution.type=zip]
[elasticsearch] [2018-08-04T16:42:26,191][WARN ][o.e.n.Node               ] [node-0] version [6.3.2-SNAPSHOT] is a pre-release version of Elasticsearch and is not suitable for production
[elasticsearch] [2018-08-04T16:42:28,808][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [aggs-matrix-stats]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [analysis-common]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [ingest-common]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [lang-expression]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [lang-mustache]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [lang-painless]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [mapper-extras]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [parent-join]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [percolator]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [rank-eval]
[elasticsearch] [2018-08-04T16:42:28,809][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [reindex]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [repository-url]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [transport-netty4]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [tribe]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-core]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-deprecation]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-graph]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-logstash]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-ml]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-monitoring]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-rollup]
[elasticsearch] [2018-08-04T16:42:28,810][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-security]
[elasticsearch] [2018-08-04T16:42:28,811][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-sql]
[elasticsearch] [2018-08-04T16:42:28,811][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-upgrade]
[elasticsearch] [2018-08-04T16:42:28,811][INFO ][o.e.p.PluginsService     ] [node-0] loaded module [x-pack-watcher]
[elasticsearch] [2018-08-04T16:42:28,811][INFO ][o.e.p.PluginsService     ] [node-0] no plugins loaded
[elasticsearch] [2018-08-04T16:42:32,722][INFO ][o.e.x.s.a.s.FileRolesStore] [node-0] parsed [0] roles from file [/Users/zhisheng/IdeaProjects/github/elasticsearch/distribution/build/cluster/run node0/elasticsearch-6.3.2-SNAPSHOT/config/roles.yml]
[elasticsearch] [2018-08-04T16:42:33,358][INFO ][o.e.x.m.j.p.l.CppLogMessageHandler] [controller/61517] [Main.cc@109] controller (64 bit): Version 6.3.2-SNAPSHOT (Build 903094f295d249) Copyright (c) 2018 Elasticsearch BV
[elasticsearch] [2018-08-04T16:42:33,783][DEBUG][o.e.a.ActionModule       ] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[elasticsearch] [2018-08-04T16:42:34,110][INFO ][o.e.d.DiscoveryModule    ] [node-0] using discovery type [zen]
[elasticsearch] [2018-08-04T16:42:34,971][INFO ][o.e.n.Node               ] [node-0] initialized
[elasticsearch] [2018-08-04T16:42:34,971][INFO ][o.e.n.Node               ] [node-0] starting ...
[elasticsearch] [2018-08-04T16:42:35,217][INFO ][o.e.t.TransportService   ] [node-0] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[elasticsearch] [2018-08-04T16:42:38,291][INFO ][o.e.c.s.MasterService    ] [node-0] zen-disco-elected-as-master ([0] nodes joined)[, ], reason: new_master {node-0}{o9SuMXP-R7uvJLtE3h37Rw}{xjoT1zvpRsm1ZDGLCab1sA}{127.0.0.1}{127.0.0.1:9300}{ml.machine_memory=17179869184, xpack.installed=true, testattr=test, ml.max_open_jobs=20, ml.enabled=true}
[elasticsearch] [2018-08-04T16:42:38,295][INFO ][o.e.c.s.ClusterApplierService] [node-0] new_master {node-0}{o9SuMXP-R7uvJLtE3h37Rw}{xjoT1zvpRsm1ZDGLCab1sA}{127.0.0.1}{127.0.0.1:9300}{ml.machine_memory=17179869184, xpack.installed=true, testattr=test, ml.max_open_jobs=20, ml.enabled=true}, reason: apply cluster state (from master [master {node-0}{o9SuMXP-R7uvJLtE3h37Rw}{xjoT1zvpRsm1ZDGLCab1sA}{127.0.0.1}{127.0.0.1:9300}{ml.machine_memory=17179869184, xpack.installed=true, testattr=test, ml.max_open_jobs=20, ml.enabled=true} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)[, ]]])
[elasticsearch] [2018-08-04T16:42:38,317][INFO ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [node-0] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[elasticsearch] [2018-08-04T16:42:38,319][INFO ][o.e.n.Node               ] [node-0] started
[elasticsearch] [2018-08-04T16:42:38,358][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [node-0] Failed to clear cache for realms [[]]
[elasticsearch] [2018-08-04T16:42:38,413][INFO ][o.e.g.GatewayService     ] [node-0] recovered [0] indices into cluster_state
[elasticsearch] [2018-08-04T16:42:38,597][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.watch-history-7] for index patterns [.watcher-history-7*]
[elasticsearch] [2018-08-04T16:42:38,660][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.watches] for index patterns [.watches*]
[elasticsearch] [2018-08-04T16:42:38,707][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.triggered_watches] for index patterns [.triggered_watches*]
[elasticsearch] [2018-08-04T16:42:38,771][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.monitoring-logstash] for index patterns [.monitoring-logstash-6-*]
[elasticsearch] [2018-08-04T16:42:38,836][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.monitoring-es] for index patterns [.monitoring-es-6-*]
[elasticsearch] [2018-08-04T16:42:38,878][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.monitoring-alerts] for index patterns [.monitoring-alerts-6]
[elasticsearch] [2018-08-04T16:42:38,926][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.monitoring-beats] for index patterns [.monitoring-beats-6-*]
[elasticsearch] [2018-08-04T16:42:38,970][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-0] adding template [.monitoring-kibana] for index patterns [.monitoring-kibana-6-*]
[elasticsearch] [2018-08-04T16:42:39,055][INFO ][o.e.l.LicenseService     ] [node-0] license [79704513-d3c4-4535-8276-beeb146765de] mode [basic] - valid

6. 그런데 저 는 다음 문제 가 생 겨 서 계속 저 를 괴 롭 히 고 있 습 니 다. 저 는 바로 뛰 어 넘 었 습 니 다.
[2018-08-01T09:44:27,370][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [] fatal error in thread [main], exiting
java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ExtendedPluginsClassLoader
    at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:632) ~[main/:?]
    at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:557) ~[main/:?]
    at org.elasticsearch.plugins.PluginsService.(PluginsService.java:162) ~[main/:?]
    at org.elasticsearch.node.Node.(Node.java:311) ~[main/:?]
    at org.elasticsearch.node.Node.(Node.java:252) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap$5.(Bootstrap.java:213) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[main/:?]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[main/:?]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[main/:?]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[main/:?]
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.plugins.ExtendedPluginsClassLoader
    at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) ~[?:?]
    at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:499) ~[?:?]
    ... 15 more

이 문제 에 부 딪 혔 을 때 저 는 GitHub 에서 도움 을 청 하 는 정 보 는 다음 과 같 습 니 다.
https://github.com/elastic/el...
하지만 내 문 제 는 해결 되 지 않 았 다. 여기 서 잠시 기록 하 자!나 자신 도 소스 코드 를 따라 가서 잘못된 정보 가 어떻게 생 겼 는 지 알 아 냈 지만 해결 방안 이 없 었 다!
IDEA 원 격 Debug Elastic Search
위의 문 제 를 해결 해 줄 수 있 을 지도 몰라!
업데이트
뒤에 한 독자 가 나 에 게 그 자신 도 이 문 제 를 만 났 다 고 일 깨 워 주 었 다. 그리고 그의 해결 방안 은 매우 좋 고 나의 문 제 를 완벽 하 게 해결 했다.여기에 기록 을 하나 하 자.
해결 방법: IDEA 열기  Edit Configurations  ,주다  Include dependencies with Provided scope  체크 를 하면 해결 할 수 있 습 니 다. 간단 하 죠?!
계속 RUN, 또 하나의 EXceptin:
[2018-08-23T01:13:38,551][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[main/:?]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[main/:?]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[main/:?]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[main/:?]
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) ~[?:?]
    at java.security.AccessController.checkPermission(AccessController.java:895) ~[?:?]
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:335) ~[?:?]
    at java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:397) ~[?:?]
...

Exception: java.security.AccessControlException thrown from the UncaughtExceptionHandler in thread "Thread-2"

첫 번 째 종류: ... 에 있다  config  디 렉 터 리 아래 새로 만 들 기  java.policy  파일, 다음 내용 을 입력 하 십시오:
grant {
    permission java.lang.RuntimePermission "createClassLoader";
};

그리고  VM options  가입 하 다  java.security.policy  이 파일 을 가리 키 면 됩 니 다.
-Djava.security.policy=/usr/local/elasticsearch-6.3.2/config/java.policy

두 번 째: 바로  %JAVA_HOME%/conf/security  디 렉 터 리 아래 (JDK 10 은 이 경로 입 니 다. 이전 버 전 은 확실 하지 않 습 니 다) 제 디 렉 터 리 는...  /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/conf/security, 열기  java.policy  서류  grant  아래 문장 을 추가 하여 권한 을 부여 합 니 다.
//for es 6.3.2
permission java.lang.RuntimePermission "createClassLoader";

재 런, 이번에 드디어 운행 을 시작 했다!!!
다시 한 번 독자 님 께 감 사 드 립 니 다. 그의 글 주 소 는: [http://laijianfeng.org/2018/0...]()
총결산
고생 하 는 길에 각종 잘못 이 너 를 귀 찮 게 하 는 것 을 빼 놓 을 수 없다. 문 제 를 해결 하 는 것 을 배 워 라!
관련 글
1. 슬 래 그 닭 은 왜 Elastic Search 소스 코드 를 봐 야 합 니까?
2. 슬 래 그 닭 의 Elastic Search 소스 분석 - 환경 구축
3. 슬 래 그 닭 의 Elastic Search 소스 코드 분석 - 시작 절차 (상)
4. 슬 래 그 닭 의 Elastic Search 소스 코드 분석 - 시작 절차 (하)
5. Elasticsearch 시리즈 글 (1): Elasticsearch 기본 단어 기 와 중간 단어 기 간 의 비교 및 사용 방법
6. Elasticsearch 시리즈 글 (2): 전문 검색엔진 Elasticsearch 클 러 스 터 구축 입문 강좌
7. Elasticsearch 시리즈 글 (3): ElasticSearch 클 러 스 터 모니터링
8. Elasticsearch 시리즈 글 (4): ElasticSearch 단일 노드 모니터링
9. Elasticsearch 시리즈 글 (5): ELK 실시 간 로그 분석 플랫폼 환경 구축
10. IDEA 원 격 Debug Elastic Search 에서

좋은 웹페이지 즐겨찾기