Java没有类def发现错误elasticsearch?

时间:2011-12-31 04:42:32

标签: ruby-on-rails windows-7 mingw elasticsearch

我在https://github.com/karmi/tire上按照这些步骤安装了弹性搜索,以便与rails上的ruby一起使用

curl -k -L -o elasticsearch-0.17.6.tar.gz http://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.17.6.tar.gz 

tar -zxvf elasticsearch-0.17.6.tar.gz

./elasticsearch-0.17.6/bin/elasticsearch -f

我在Windows 7上的MinGW上运行它,大部分过程都进行了 顺利进行。

然而,当我尝试使用./elasticsearch-0.17.6/bin/启动服务器时 elasticsearch -f我得到一个java没有类def发现错误:

$ ./elasticsearch-0.17.6/bin/elasticsearch
Exception in thread "main" java.lang.NoClassDefFoundError: org/
elasticsearch/bootstrap/ElasticSearch
Caused by: java.lang.ClassNotFoundException:
org.elasticsearch.bootstrap.ElasticSearch
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class:
org.elasticsearch.bootstrap.ElasticSearch.  Program will exit.

是什么给出了?

1 个答案:

答案 0 :(得分:3)

Mingw将路径和环境变量转换为UNIX等价物。它旨在使用自己的工具,并运行一些外来的东西,如java.exe,并不总是像你期望的那样工作。特别是,该脚本在变量ES_CLASSPATH中构建Java类路径,然后使用-cp开关将其传递给Java,我敢打赌它正在向Java传递一条它根本无法理解的路径。

我要做的是找到在该脚本中执行java.exe的行,并复制前面带有“echo”的行,以便您可以看到正在执行的命令行。然后调整脚本以提供适当的Java类路径。