'Ruby - Constants DL and Fiddle is not defined

When I go to execute the rake db:create showing error Constants DL and Fiddle is not defined

I am using ruby 2.2.3. I think I have a problem with my rjb

rake aborted!

Constants DL and Fiddle is not defined. /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:62:in load' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:62:ininit' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:72:in block in <class:Railtie>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:36:incall' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:36:in execute_hook' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:45:inblock in run_load_hooks' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:44:in each' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:44:inrun_load_hooks' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application/finisher.rb:62:in block in <module:Finisher>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:30:ininstance_exec' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:30:in run' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:55:inblock in run_initializers' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:54:in run_initializers' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:352:ininitialize!' /home/nibo/rails_workplace/ekylibre/config/environment.rb:5:in <top (required)>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/skylight-1.3.1/lib/skylight/probes.rb:81:inrequire' /home/nibo/.rvm/gems/ruby-2.2.5/gems/skylight-1.3.1/lib/skylight/probes.rb:81:in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/polyglot-0.3.5/lib/polyglot.rb:65:inrequire' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in block in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:240:inload_dependency' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:328:inrequire_environment!' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:457:in block in run_tasks_blocks' /home/nibo/rails_workplace/ekylibre/lib/tasks/db/tenanting.rake:19:inblock in ' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rake-12.1.0/exe/rake:27:in <top (required)>' /home/nibo/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:ineval' /home/nibo/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:in <main>' LoadError: cannot load such file -- dl /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:62:inload' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:62:in init' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:72:inblock in ' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:36:in call' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:36:inexecute_hook' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:45:in block in run_load_hooks' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:44:ineach' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:44:in run_load_hooks' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application/finisher.rb:62:inblock in ' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:30:in instance_exec' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:30:inrun' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:55:in block in run_initializers' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:54:inrun_initializers' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:352:in initialize!' /home/nibo/rails_workplace/ekylibre/config/environment.rb:5:in' /home/nibo/.rvm/gems/ruby-2.2.5/gems/skylight-1.3.1/lib/skylight/probes.rb:81:in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/skylight-1.3.1/lib/skylight/probes.rb:81:inrequire' /home/nibo/.rvm/gems/ruby-2.2.5/gems/polyglot-0.3.5/lib/polyglot.rb:65:in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:inblock in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:240:in load_dependency' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:inrequire' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:328:in require_environment!' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:457:inblock in run_tasks_blocks' /home/nibo/rails_workplace/ekylibre/lib/tasks/db/tenanting.rake:19:in block in <top (required)>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rake-12.1.0/exe/rake:27:in' /home/nibo/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:in eval' /home/nibo/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:in' Fiddle::DLError: /usr/local/java/9-internal/jre/lib/amd64/server/libjvm.so: cannot open shared object file: No such file or directory /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:62:in load' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:62:ininit' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rjb-loader-0.0.2/lib/rjb-loader.rb:72:in block in <class:Railtie>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:36:incall' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:36:in execute_hook' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:45:inblock in run_load_hooks' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:44:in each' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/lazy_load_hooks.rb:44:inrun_load_hooks' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application/finisher.rb:62:in block in <module:Finisher>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:30:ininstance_exec' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:30:in run' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:55:inblock in run_initializers' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/initializable.rb:54:in run_initializers' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:352:ininitialize!' /home/nibo/rails_workplace/ekylibre/config/environment.rb:5:in <top (required)>' /home/nibo/.rvm/gems/ruby-2.2.5/gems/skylight-1.3.1/lib/skylight/probes.rb:81:inrequire' /home/nibo/.rvm/gems/ruby-2.2.5/gems/skylight-1.3.1/lib/skylight/probes.rb:81:in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/polyglot-0.3.5/lib/polyglot.rb:65:inrequire' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in block in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:240:inload_dependency' /home/nibo/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in require' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:328:inrequire_environment!' /home/nibo/.rvm/gems/ruby-2.2.5/gems/railties-4.2.10/lib/rails/application.rb:457:in block in run_tasks_blocks' /home/nibo/rails_workplace/ekylibre/lib/tasks/db/tenanting.rake:19:inblock in ' /home/nibo/.rvm/gems/ruby-2.2.5/gems/rake-12.1.0/exe/rake:27:in <top (required)>' /home/nibo/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:ineval' /home/nibo/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:in `'



Solution 1:[1]

I get this problem occasionally when updating Java, and it seems the cause is that the RJB folks haven't kept up with the new JDK layout. In particular, RJB is relying on finding libjvm.so somewhere in $JAVA_HOME/jre but that's not been the case since Java 9 came out.

The only workaround I've found is to create a symbolic link to replicate the path that Ruby is expecting to find in the Java home directory.

This does the trick on my Linux machine (when run as root):

cd $JAVA_HOME
mkdir -p jre/lib/amd64
ln -s $JAVA_HOME/lib/server/ jre/lib/amd64/server

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ATG