编译
下载源码
https://github.com/elastic/elasticsearch.git 从GitHub下载代码
然后切换到对应的分支,我这里使用 7.10 版本
编译
Idea 导入项目后,设置对应的jdk版本,这里使用jdk11编译
如果报sha256sum错误,那么直接点击下面的 "Use*** "即可
编译完成之后
gradle:run --debug-jvm运行后还是报错:
找不到符号 import org.gradle.jvm.toolchain.JavaInstallation;然后将本地的gradle也换成了es项目中一样的版本6.6.1,记得将 项目中的.gradle文件夹删掉
使用main函数启动
异常一
ERROR: the system property [es.path.conf] must be set解决办法
这是需要配置 es.path.conf 参数,我们先在 elasticsearch 源码目录下新建一个
home 目录,然后在 https://www.elastic.co/downloads/elasticsearch
下载一个同版本号的 Elasticsearch7.10 发行版,解压,将config 目录拷贝到home
目录中
然后打开 Edit Configurations,在 VM options 加入如下配置:
-Des.path.conf=/Users/odyssey/elasticsearch/home/config
-Des.path.home=/Users/odyssey/elasticsearch/home
-Dlog4j2.disable.jmx=true
异常二
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.plugins.ExtendedPluginsClassLoader
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
解决办法
勾选idea此选项即可。(注: 各版本该选项位置不同,此版本为2021)

异常三
current version is 7.10 but 7.10.3isrunning
解决办法
修改版本如下: 将7.10.3 改成了 7.10.0

异常四
uncaught exception in thread [main]
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
at java.base/java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:384)
at java.base/java.lang.ClassLoader.checkCreateClassLoader(ClassLoader.java:369)
at java.base/java.lang.ClassLoader.checkCreateClassLoader(ClassLoader.java:359)
at java.base/java.lang.ClassLoader.<init>(ClassLoader.java:456)
at org.elasticsearch.plugins.ExtendedPluginsClassLoader.<init>(ExtendedPluginsClassLoader.java:36)
at org.elasticsearch.plugins.ExtendedPluginsClassLoader.lambda$create$0(ExtendedPluginsClassLoader.java:57)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at org.elasticsearch.plugins.ExtendedPluginsClassLoader.create(ExtendedPluginsClassLoader.java:56)
at org.elasticsearch.plugins.PluginLoaderIndirection.createLoader(PluginLoaderIndirection.java:31)
at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:636)
at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:479)
at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:168)
at org.elasticsearch.node.Node.<init>(Node.java:346)
at org.elasticsearch.node.Node.<init>(Node.java:289)
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
For complete error details, refer to the log at Users/odyssey/elasticsearch/home/logs/elasticsearch.log
Disconnected from the target VM, address: '127.0.0.1:63585', transport: 'socket'
解决办法
在 home/config 目录下新建 java.policy 文件,填入下面内容
grant {
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
};
然后在 VM options 加入 java.security.policy 的设置,指向该文件即可
-Djava.security.policy=/Users/odyssey/elasticsearch/home/config/java.policy
异常五
这个异常是在windows机器上跑的时候产生的,异常信息如下:
Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false]Caused by: org.elasticsearch.ElasticsearchException: Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].
at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:645) ~[?:?]
at org.elasticsearch.node.Node.lambda$new$15(Node.java:553) ~[classes/:?]
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
at org.elasticsearch.node.Node.<init>(Node.java:557) ~[classes/:?]
at org.elasticsearch.node.Node.<init>(Node.java:289) ~[classes/:?]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227) ~[classes/:?]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227) ~[classes/:?]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393) ~[classes/:?]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[classes/:?]
... 6 more
解决办法
在elasticsearch.yml中增加配置即可解决 ,也就是elasticsearch/home/config/elasticsearch.yml
xpack.ml.enabled: false最终 vm options配置
-Des.path.conf=/Users/odyssey/elasticsearch/home/config
-Des.path.home=/Users/odyssey/elasticsearch/home
-Dlog4j2.disable.jmx=true
-Djava.security.policy=/Users/odyssey/elasticsearch/home/config/java.policy
参考文章
https://www.cnblogs.com/candlia/p/11920056.html




