渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建
关注我
转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/25/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/downloads/past-releases 这里找到 ElasticSearch 6.3.2 版本,下载后然后解压就好了。(注意:这个版本需要和下面的源码版本一致)
下载源码
从 https://github.com/elastic/elasticsearch 上下载相应版本的源代码,这里建议用 git clone ,这样的话后面你可以随意切换到 ElasticSearch 的其他版本去。
git clone git@github.com:elastic/elasticsearch.git
我们看下有哪些版本的:
git tag
找到了目前源码版本最新的版本的稳定版为:v6.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 中配置好环境。下面说下步骤吧:(这里我只是演示在 IDEA 中如何导入)
1、在我们下载的 Elasticsearch 根目录下执行命令:(执行已经写好的脚本 gradlew)
./gradlew idea
请注意版本和我的一致,早的版本可能没有该执行脚本,需要执行 gradle idea
命令
最后结果如下:
2、导入 IDEA
idea 中 File -> New Project From Existing Sources
选择你下载的 Elasticsearch 根目录,然后点 open
,之后 Import project from external model -> Gradle
, 选中 Use auto-import
, 然后就可以了。
导入进去后,gradle 又会编译一遍,需要等一会,好了之后如下:
运行
打开 server 模块下的 Elasticsearch 类:org.elasticsearch.bootstrap.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.<init>(Environment.java:103)
at org.elasticsearch.env.Environment.<init>(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.<init>(PluginsService.java:162) ~[main/:?]
at org.elasticsearch.node.Node.<init>(Node.java:311) ~[main/:?]
at org.elasticsearch.node.Node.<init>(Node.java:252) ~[main/:?]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(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/elasticsearch/issues/30774
但是并没有解决我的问题,这里暂时先记录下来!我自己也跟了下源码,定位到错误信息是怎么产生的,但是没有解决方案!
总结
折腾的路上少不了各种错误烦扰你,学会解决问题!
相关文章
2、Elasticsearch 系列文章(一):Elasticsearch 默认分词器和中分分词器之间的比较及使用方法
3、Elasticsearch 系列文章(二):全文搜索引擎 Elasticsearch 集群搭建入门教程
4、Elasticsearch 系列文章(三):ElasticSearch 集群监控
5、Elasticsearch 系列文章(四):ElasticSearch 单个节点监控
6、Elasticsearch 系列文章(五):ELK 实时日志分析平台环境搭建
渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建的更多相关文章
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(下)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入 ...
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- ...
- ElasticSearch源码解析(五):排序(评分公式)
ElasticSearch源码解析(五):排序(评分公式) 转载自:http://blog.csdn.net/molong1208/article/details/50623948 一.目的 一个 ...
- Spark源码分析环境搭建
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3868718.html 本文主要分享一下如何构建Spark源码分析环境.以前主要使用eclipse来阅读源 ...
- 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程
原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...
- 基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建
基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...
- Hadoop源码阅读环境搭建(IDEA)
拿到一份Hadoop源码之后,经常关注的两件事情就是 1.怎么阅读?涉及IDEA和Eclipse工程搭建.IDEA搭建,选择源码,逐步导入即可:Eclipse可以选择后台生成工程,也可以选择IDE导入 ...
- Elasticsearch源码解析:环境搭建
在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码.我发现两种方法可以相辅相成,互相补充.阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想 ...
- elasticsearch 源码本地环境搭建
elasticsearch6.0.0 源码本地环境搭建步骤如下: 1.资源准备 ElasicSearch版本:6.0.0: https://github.com/elastic/elasticsear ...
随机推荐
- 集训Day9
又是不想学化学但元气满满的一天呢qwq 今天又有新的故事发生那就是! bzoj2150 最小流 每个点拆成$a_x$和$a_y$ $S$->$a_x$容量为1 $a_y$->$T$容量为1 ...
- Python中定时任务框架APScheduler的快速入门指南
前言 大家应该都知道在编程语言中,定时任务是常用的一种调度形式,在Python中也涌现了非常多的调度模块,本文将简要介绍APScheduler的基本使用方法. 一.APScheduler介绍 APSc ...
- 有趣的Javascript:只需一个JS让万恶的IE5、IE6、IE7、IE8全都支持H5原生Canvas绘图(有演示demo)
该demo支持IE5以上任意内核的浏览器 查看演示demo:支持IE5以上版本的浏览器Canvas绘图demo 补充:chats.js和echarts等图表库也可以使用本方法兼容IE6以上浏览器 1. ...
- C#支持从自定义日期时间格式到DateTime类型
/// <summary> /// /// </summary> /// <param name=&quo ...
- noip2013提高组:积木大赛
题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第n块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...
- python基础知识-数字
数字分为: 整数(int) 长整型(long) 浮点型(float) 一,整数 整数(int):即不带小数点的数字,如 12 ,45 ,0 ,3 #!/usr/bin/env python class ...
- ScrollView cannot scroll in Slidinguppanellayout 解决办法
xml源码如下 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:an ...
- Elasticsearch的前后台运行与停止(rpm包方式)
对应,这es的下载,需要rpm包. Elasticsearch-2.4.3的下载(图文详解) 建议用root用户 [root@djt002 elasticsearch-2.4.3]$ pwd/usr/ ...
- java 资料必备
学习java个人以为必备的资料很多,边上课,边总结: 1.jdk API这个是必须的,什么资料都没有这个权威 2. javaJAVA 2核心技术7th 3. BJava就业培训教程张孝祥 4. thi ...
- windows64位如何安装pyspider并运行
1.下载whl文件: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 2.安装该文件 3.可能碰到问题,pip的版本低了,需要更新一下pip的版本.更新 ...