2013-04-24 54 views
2

我必須「在我的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 

任何想法?

回答

0

該錯誤消息表示:

無法加載薩斯。請使用以下命令之一安裝:

​​3210
+0

創業板安裝指南針,自動安裝頂嘴。這意味着指南針安裝「糟糕」sass?這似乎很奇怪......但我會嘗試:) – nabellaleen 2013-04-24 12:12:17

+0

我以爲你想從'.jar'加載你的寶石?然後,是否安裝了寶石並不重要,與您是否將其打包到'.jar'中有什麼關係。 – 2013-04-24 12:26:18

+0

當我運行'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