Sunspot::Solr::Server::JavaMissing: вам нужна среда выполнения Java для запуска сервера Solr.

Попытка запустить Solr с помощью sunspot, но возникает проблема с Java Runtime Environment из-за этой ошибки.

root@oktobTest:~# dokku run oktob bundle exec rake sunspot:solr:start
rake aborted!
Sunspot::Solr::Server::JavaMissing: You need a Java Runtime Environment to run the Solr server
/app/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.2.0/lib/sunspot/solr/server.rb:203:in `ensure_java_installed'
/app/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.2.0/lib/sunspot/solr/server.rb:27:in `initialize'
/app/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.2.0/lib/sunspot/solr/tasks.rb:38:in `new'
/app/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.2.0/lib/sunspot/solr/tasks.rb:38:in `server'
/app/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.2.0/lib/sunspot/solr/tasks.rb:10:in `block (3 levels) in <top (required)>'
Tasks: TOP => sunspot:solr:start
(See full trace by running task with --trace)

Solar запущена и работает на удаленном сервере.

Java установлена

root@oktobTest:~# which java
/usr/bin/java

И это результат sudo update-alternatives --config java

root@oktobTest:~# sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-oracle/jre/bin/java          1073      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1072      manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1073      manual mode

Я отредактировал файл /etc/profile, чтобы экспортировать путь, вдохновленный обсуждениями здесь и здесь и javaandme

JAVA_HOME=/usr/java/default
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH

Я не уверен, что указанный выше путь правильный или нет.

config/sunspot.xml файл

production:
  solr:
    hostname: localhost
    port: 8983
    log_level: WARNING
    path: /solr/production
    # read_timeout: 2
    # open_timeout: 0.5

development:
  solr:
    hostname: localhost
    port: 8982
    log_level: INFO
    path: /solr/development

test:
  solr:
    hostname: localhost
    port: 8981
    log_level: WARNING
    path: /solr/test

person Ahmad Ajmi    schedule 16.05.2015    source источник


Ответы (3)


Для меня переустановка JDK (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) устраняет проблему, возникшую при первом использовании solr в El Capitan.

person aquajach    schedule 12.10.2015

У меня такая же ошибка. При выполнении следующей команды.

$ bundle exec rake sunspot:solr:start -t

** Invoke sunspot:solr:start (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute sunspot:solr:start
rake aborted!
Sunspot::Solr::Server::JavaMissing: You need a Java Runtime Environment to run the Solr server

С помощью этой команды

$ bundle exec rake --execute 'puts which java'  

Я получаю «/usr/bin/java».

Но по следующей команде

$ java --version -> 'No Java runtime present, requesting install.

Я использую Mac OSX, и он вызвал сообщение и щелкнул дополнительную информацию, к которой он переходит:

oracle.com/technetwork/java/javase/downloads/index.html

Итак, я установил JDK 8 по ссылке:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

для макинтош

http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-macosx-x64.dmg

$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

После этого сервер Solr успешно запускается :).

В вашем случае вам необходимо переустановить JDK по приведенной выше ссылке, чтобы он заработал

У вас есть среда выполнения openJDK. Переключитесь на Java(TM) SE Runtime Environment, чтобы заставить Solr работать. Прочитайте это (разница между -oracle-jdk-and-open-jdk)

Запустите фон сервера Solr,

$ bundle exec rake sunspot:solr:start -t

Successfully started Solr ...

Остановить сервер Solr:

$ bundle exec rake sunspot:solr:stop -t 

Запустите сервер solr на переднем плане:

$ bundle exec rake sunspot:solr:run -t
person Abhi    schedule 16.06.2017

Есть несколько тем по этой проблеме. Если вы уверены, что с Java на сервере все в порядке, попробуйте вставить в файл конфигурации (config/sunspot.yml) для соответствующей среды эту строку «solr_home: solr» и запустить сервер solr командой «RAILS_ENV=[your_env] bundle exec». солнечное пятно:солр:старт"

person Radek    schedule 17.05.2015
comment
Я сделал solr_home: solr, но безуспешно, и когда я включаю RAILS_ENV=production в команду, я получаю App oktob RAILS_ENV=production does not exist - person Ahmad Ajmi; 18.05.2015
comment
Извините, но я думаю, что проблема с вашей машиной/хостингом, как видите, вы не можете запустить даже простую команду. Где вы размещаетесь и какой дистрибутив используете? - person Radek; 18.05.2015
comment
Я использую DigitalOcean с Ubuntu и Rails, развернутым с Dokku, но все работает, и демо-приложение работает по адресу 46.101.47.185, а Solor по адресу 46.101.47.185:8983/solr/# - person Ahmad Ajmi; 19.05.2015
comment
Конечно, возможно, этот учебник будет полезен: ссылка - person Radek; 19.05.2015
comment
Да, я использовал эту статью в качестве основного источника. - person Ahmad Ajmi; 19.05.2015