环境
idea 2022.1.3 jdk17 macos 10.14.6 gradle 7.4.2(代码自动下载)
前置准备
idea
设置JDK17
idea
设置gradle JVM
为Project JVM
gradle
设置aliyun
加速(可选),有时设置了不如不设置更好
开始导入
导入项目 使用 idea
open项目下的build.gradle
,等待编译结束编译 8.1
版本的发行包 这一步会下载所需的依赖jdk
,如果报错可以多尝试几次,或者切换网络,执行该命令时,注意终端jdk环境
./gradlew localDistro
复制
复制发行包到项目根目录同级目录新建 home
文件夹下,文件结构如下
├── elasticsearch
│ ├── BUILDING.md
│ ├── CONTRIBUTING.md
│ ├── LICENSE.txt
│ ├── NOTICE.txt
│ ├── README.asciidoc
│ ├── README.md
│ ├── TESTING.asciidoc
│ ├── Vagrantfile
│ ├── benchmarks
│ ├── build
│ ├── build-conventions
│ ├── build-tools
│ ├── build-tools-internal
│ ├── build.gradle
│ ├── ccr
│ ├── checkstyle_ide.xml
│ ├── client
│ ├── dev-tools
│ ├── distribution
│ ├── docs
│ ├── gradle
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── libs
│ ├── licenses
│ ├── modules
│ ├── plugins
│ ├── qa
│ ├── rest-api-spec
│ ├── server
│ ├── settings.gradle
│ ├── test
│ └── x-pack
├── home
│ ├── LICENSE.txt
│ ├── NOTICE.txt
│ ├── README.asciidoc
│ ├── bin
│ ├── config
│ ├── data
│ ├── jdk.app
│ ├── lib
│ ├── logs
│ ├── modules
└── └── plugins复制
启动 找到 Elasticsearch.java
运行main
方法报错1: ERROR: the system property [es.path.conf] must be set
-Des.path.conf=/cxt/codework/github/elasticsearch/8.1/home/config
复制
报错2: path.home is not configured
-Des.path.home=/cxt/codework/github/elasticsearch/8.1/home
复制
报错3: main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
创建一个 java.policy,
内容如下(完整内容在末尾获取)
grant {
permission javax.management.MBeanTrustPermission "register";
};复制
运行时指定
-Djava.security.policy=/cxt/codework/github/elasticsearch/8.1/home/config/java.policy
复制
报错4: access denied ("java.lang.RuntimePermission" "createClassLoader")
刚才的java.policy
文件中增加如下(完整内容在末尾获取)
permission java.lang.RuntimePermission "createClassLoader";
复制
报错5: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")
刚才的java.policy
文件中增加如下(完整内容在末尾获取)
permission java.lang.RuntimePermission "setContextClassLoader";
复制
报错6: access denied ("org.elasticsearch.secure_sm.ThreadPermission" "modifyArbitraryThreadGroup")
刚才的java.policy
文件中增加如下(完整内容在末尾获取)
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup";
复制
报错7:报错如下(完整内容在末尾获取)
Caused by: java.lang.IllegalArgumentException: Unknown codebases [codebase.elasticsearch-plugin-classloader, codebase.elasticsearch, codebase.elasticsearch-secure-sm] in policy file [file:/cxt/codework/github/elasticsearch/8.1/elasticsearch/server/out/production/resources/org/elasticsearch/bootstrap/security.policy]
复制
解决如下,找到 server/src/main/resources/org/elasticsearch/bootstrap/security.policy
,注释掉一下三个[codebase.elasticsearch-plugin-classloader, codebase.elasticsearch, codebase.elasticsearch-secure-sm]
//grant codeBase "${codebase.elasticsearch-plugin-classloader}" {
needed to create the classloader which allows plugins to extend other plugins
permission java.lang.RuntimePermission "createClassLoader";
//};
//grant codeBase "${codebase.elasticsearch-secure-sm}" {
// permission java.security.AllPermission;
//};
//// Elasticsearch core:
//// These are only allowed inside the server jar, not in plugins
//grant codeBase "${codebase.elasticsearch}" {
needed for loading plugins which may expect the context class loader to be set
// permission java.lang.RuntimePermission "setContextClassLoader";
//};复制
总结
完整的启动参数设置如下
-Des.path.conf=/cxt/codework/github/elasticsearch/8.1/home/config
-Des.path.home=/cxt/codework/github/elasticsearch/8.1/home
-Djava.security.policy=/cxt/codework/github/elasticsearch/8.1/home/config/java.policy
-Dlog4j2.disable.jmx=true复制
也可以在Elasticsearch.main
方法执行前通过代码的形式指定环境变量(可选)
System.setProperty("es.path.conf","/cxt/codework/github/elasticsearch/8.1/home/config");
System.setProperty("es.path.home", "/cxt/codework/github/elasticsearch/8.1/home");
System.setProperty("log4j2.disable.jmx", "true"); System.setProperty("java.security.policy","/cxt/codework/github/elasticsearch/8.1/home/config/java.policy");复制
完整的 java.policy
文件如下
grant {
permission javax.management.MBeanTrustPermission "register";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup";
};复制
文章转载自醉鱼Java,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
阿里云 Elasticsearch Serverless 检索增强型 8.17 版来袭!
阿里云大数据AI技术
376次阅读
2025-04-18 10:24:15
AI 乱写代码怎么破?使用 Context7 MCP Server 让 AI 写出靠谱代码!
Se7en的架构笔记
116次阅读
2025-04-29 09:53:31
阿里云 Elasticsearch Serverless 检索增强型8.17版免费邀测!
阿里云大数据AI技术
66次阅读
2025-04-15 13:18:15
利用 EDB Postgres AI - WarehousePG 替换 Greenplum 实现数据仓库现代化
新智锦绣
63次阅读
2025-04-18 17:28:36
为流复制优化TCP设置
新智锦绣
36次阅读
2025-04-10 11:52:27
PGD4K 正式版发布!同时支持 Kubernetes 和 Openshift 平台
新智锦绣
34次阅读
2025-04-25 10:10:43
可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
SelectDB
28次阅读
2025-05-09 16:48:09
炸裂!又一个AI大模型的新方向,彻底爆了!!
铭毅天下Elasticsearch
28次阅读
2025-04-16 10:33:42
「码」上行动,抢滩AI搜索C位!
新智锦绣
24次阅读
2025-04-23 14:33:57
不要轻易把 Kibana 权限随意给别人,好吗?
铭毅天下Elasticsearch
24次阅读
2025-04-16 10:33:44