How to properly add CLASSPATH to a JRuby on Rails project?

I added some external jars to my CLASSPATH by adding this to config/application.rb :

 require 'java' $CLASSPATH << "#{File.dirname(__FILE__)}/../backend/src/" Dir["#{File.dirname(__FILE__)}/../backend/lib/*.jar"].each do |jar| require jar end 

This works fine when starting Rails using rails server . Banks from CLASSPATH are loading. However, when rake starts, the class path is not set. How can i install it? In particular, I need to install it before downloading my gems, since I use the JRClj gem, which relies on the existing clojure.jar in my CLASSPATH.

(Oh, I also tried putting the code in environment.rb; didn't help)

By "not working" I mean:

 $ rake rspec --trace rake aborted! No such file to load -- /MY_CURRENT_WORKING_DIRECTORY/clojure.lang.RT org/jruby/RubyKernel.java:1063:in `load' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/activesupport-3.1.1/lib/active_support/dependencies.rb:640:in `new_constants_in' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/activesupport-3.1.1/lib/active_support/dependencies.rb:639:in `new_constants_in' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/default_loader.rb:6:in `load' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:569:in `load_imports' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:508:in `raw_load_rakefile' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:82:in `load_rakefile' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:65:in `run' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /gems/rake-0.9.2.2/bin/rake:33:in `(root)' org/jruby/RubyKernel.java:1063:in `load' /Users/pbiggar/.rvm/gems/ jruby-1.6.5@jruby-clojure-combination /bin/rake:19:in `(root)' 
+4
source share
1 answer

This happened because, as a gem, I used import instead of java_import by clicking JRUBY error 3797 . More details in: JRuby: import vs include vs java_import vs include_class .

The correct code in question.

+3
source

Source: https://habr.com/ru/post/1380977/


All Articles