我必須「在我的java軟件中動態編譯」指南針文件。那麼,下面就計算器發現吃茶,我所做的這些步驟:如何通過JRuby使用指南針,嵌入我的軟'?
- 獲取的JRuby(1.7.3),配置PATH到jruby.jar和二進制文件(寶石,耙...),學會推出紅寶石從Java腳本
獲取羅盤和寶石的依賴關係到一個本地目錄中,使用下面的命令行
gem install -i ./compass compass
=>所以,我得到一個目錄
./compass/
含bin, cache,doc, gems & specifications
目錄。使用下面的命令行在一個罐子穿戴寶石(認爲使用罐子名這是不一樣的寶石,以避免JRuby的「規定」的jar代替寶石)
jar cf compass-lib.jar -C compass .
在本地目錄中寫一個測試腳本
test.rb
來測試我的jar。它包含:require 'compass' Compass.add_configuration( { :project_path => '.', :sass_path => 'styles/scss', :css_path => 'styles/css' }, 'custom' # A name for the configuration, can be anything you want ) Compass.compiler.compile('test.scss', 'test.css')
執行此腳本使用JRuby,用以下命令行:
jruby -I . -rcompass-lib.jar test.rb
而得到這個錯誤...
Unable to load Sass. Please install it with one of the following commands: gem install sass --pre LoadError: no such file to load -- jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/s ass-3.2.8/lib/sass/../sass require at org/jruby/RubyKernel.java:1027 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:36 (root) at jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/sass-3.2.8/lib/sass/ver sion.rb:5 require at org/jruby/RubyKernel.java:1027 (root) at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:1 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:36 require at org/jruby/RubyKernel.java:1027 (root) at jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/sass-3.2.8/lib/sass.rb: 9 (root) at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:1 require at org/jruby/RubyKernel.java:1027 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:60 (root) at jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/compass-0.12.2/lib/comp ass/dependencies.rb:6 each at org/jruby/RubyArray.java:1613 (root) at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:1 require at org/jruby/RubyKernel.java:1027 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:36 (root) at test.rb:1
的想法這個問題,也許是解決方案? ;)提前致謝。
[UPDATE#1]
約爾格W¯¯米塔格明顯建議,誤差disapear後。感謝;)現在,它只是沒有找到SCSS文件,所以這是一個「普通問題」;)
[更新#2]
已經使用在IRB成功的指南針,是時候通過Java轉置測試。所以,我在Java中寫了一些行來執行我的ruby腳本,僅使用絕對路徑來第一次避免問題。
InputStream myFile = ISRessources.getFile("C:/Path/To/My/test.rb");
new ScriptingContainer().runScriptlet(myFile, "test.rb");
但是...如何「加載」我的compass-lib.jar
? JRuby中的-r
相當於什麼?我試着includ寶石到jruby.jar,以在Java構建路徑中的外部jar添加指南針lib.jar,但都沒有工作,我仍然有:
LoadError: no such file to load -- compass
require at org/jruby/RubyKernel.java:1027
(root) at test.rb:1
任何想法?
創業板安裝指南針,自動安裝頂嘴。這意味着指南針安裝「糟糕」sass?這似乎很奇怪......但我會嘗試:) – nabellaleen 2013-04-24 12:12:17
我以爲你想從'.jar'加載你的寶石?然後,是否安裝了寶石並不重要,與您是否將其打包到'.jar'中有什麼關係。 – 2013-04-24 12:26:18
當我運行'gem install -i ./compass compass'時,它會安裝指南針,但也會將sass-3.2.8安裝到./compass目錄中。 用pre安裝sass,它將sass-3.3.0.alpha.133添加到目錄中(這是工作!)。所以我看到,作爲指南針安裝失敗,但也許這是另一個問題? – nabellaleen 2013-04-24 12:34:12