我正在尝试在OSX Mavericks上安装Elasticsearch 1.1.0但是当我尝试启动时出现以下错误:
:> ./elasticsearch Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.Version at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:252) at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:236) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
此外,当我用-v arg执行相同的命令时,我收到此错误:
:> ./elasticsearch -v Exception in thread "main" java.lang.NoSuchFieldError: LUCENE_36 at org.elasticsearch.Version.(Version.java:42)
这是我的环境:
Java版本
>: java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
安装路径(从elasticsearch下载页面下载.tar.gz存档并在此处提取):
/usr/local/elasticsearch-1.1.0
ENV vars:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home CLASSPATH=/usr/local/elasticsearch-1.1.0/lib/*.jar:/usr/local/elasticsearch-1.1.0/lib/sigar/*.jar
我终于让它工作,不幸的是不确定如何,因为我尝试了很多变化:).但是这里有一个我可以提供帮助的变化列表:
我删除了jdk和jre并重新安装在干净的环境中. http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html#A1096855
我删除了所有的缓存目录.我想这可能是它现在正在工作的"原因"
〜/图书馆/缓存
/图书馆/缓存
我删除了CLASSPATH env var.
ES_PATH和ES_HOME env变量也没有设置,但我认为这不是那么重要.
注意:如果我正在使用brew进行安装,现在它也可以正常工作.
谢谢.
你应该考虑使用brew.它是一个很好的工具,可以处理依赖关系,版本控制等等.
要使用brew安装Elasticsearch,只需:
brew update brew install elasticsearch
繁荣!完成.
之后遵循Elasticsearch说明:
要在启动时启动Elasticsearch,请登录:
ln -sfv /usr/local/opt/elasticsearch/*.plist ~/Library/LaunchAgents
然后立即加载Elasticsearch:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist
或者,如果您不想/需要launchctl,您可以运行:
elasticsearch
由于没有非常好的说明将其"安装"到Mac上:
安装Java(更喜欢最新支持的版本)
设置JAVA_HOME
环境变量.
下载Elasticsearch版本(tar或zip).
从下载的文件中提取Elasticsearch.
bin/elasticsearch
从解压缩的目录运行.
下载Java
如果您不在同一台机器上编写代码,则只需要JRE.
我假设您正在获得最新的JDK,目前是JDK 8(正如您所看到的那样,我已安装在我的机器上工作).
下载并解压缩Elasticsearch并将其解压缩到某个目录中.
例如: mkdir -p ~/dev/elasticsearch
(可选)将下载的文件移动到那里:
mv Downloads/elasticsearch* ~/dev/elasticsearch
解压缩下载的文件:
cd ~/dev/elasticsearch
(如果你在第2步中移动它)
如果它是zip,那么unzip elasticsearch-1.1.0.zip
(或者如果你不想cd
进入目录,那么就运行unzip elasticsearch-1.1.0.zip -d ~/dev/elasticsearch
)
如果它是tar,那么tar -xvf elasticsearch-1.1.0.tar.gz
(或者如果你不想cd
进入目录,那么就运行tar -xvf elasticsearch-1.1.0.tar.gz -C ~/dev/elasticsearch
)
通过删除下载的文件进行清理(如果需要):
rm elasticsearch-1.1.0.*
打开您.bash_profile
的bash配置文件设置文件:
vi ~/.bash_profile
在文件中,导出您的环境变量
export ES_HOME=~/dev/elasticsearch/elasticsearch-1.1.0
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
export PATH=$ES_HOME/bin:$JAVA_HOME/bin:$PATH
关闭并重新打开终端或
运行source ~/.bash_profile
以更新环境变量
运行Elasticsearch:
elasticsearch
运行它更传统的方式是做几乎所有的方法,但不添加$ES_HOME/bin
到PATH
.然后,转到ES_PATH
(cd $ES_PATH
,然后bin/elasticsearch
)或运行$ES_PATH/bin/elasticsearch
.
注意:CLASSPATH
如果没有充分理由,请不要设置.脚本将为您完成.
你应该尝试使用brew上次更新:
brew update
并安装Cask java:
brew cask install java
之后,您可以安装elasticsearch:
brew install elasticsearch
并且已经启动了弹性搜索现在使用:
brew services start elasticsearch
或者你可以运行:
elasticsearch