2

我必须在我的 java 软件中动态地“编译”罗盘文件。所以,按照stackoverflow上的解释,我已经完成了这些步骤:

  • 获取 JRuby (1.7.3),配置 jruby.jar 和二进制文件 (gem, rake ...) 的 PATH 并学习从 Java 启动 ruby​​ 脚本
  • 使用以下命令行将指南针和依赖项 gem 放入本地目录

    gem install -i ./compass compass
    

    => 所以我得到一个./compass/包含目录的bin, cache,doc, gems & specifications目录。

  • 使用以下命令行将 gems 放入 jar 中(考虑使用与 gems 不同的 jar 名称,以避免 JRuby“需要”jar 而不是 gems)

    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
    

对问题的想法,也许还有解决方案?;) 提前感谢。

[更新#1]

在 Jörg W Mittag 明显的建议之后,错误消失了。谢谢 ;) 现在,它只是找不到 scss 文件,所以这是一个“正常问题” ;)

[更新#2]

在 IRB 中成功使用 compass 之后,是时候通过 Java 转置测试了。因此,我在 Java 中编写了一些行来执行我的 ruby​​ 脚本,第一次只使用绝对路径来避免出现问题。

InputStream myFile = ISRessources.getFile("C:/Path/To/My/test.rb");
new ScriptingContainer().runScriptlet(myFile, "test.rb");

但是......如何“加载”我的compass-lib.jar-rJRuby 中的等价物是什么?我尝试将 gem 包含到 jruby.jar 中,以在 java 构建路径的外部 jar 中添加 compass-lib.jar,但两者都不起作用,我仍然有:

LoadError: no such file to load -- compass
  require at org/jruby/RubyKernel.java:1027
   (root) at test.rb:1

任何想法 ?

4

1 回答 1

0

错误消息说:

无法加载 Sass。请使用以下命令之一安装它:

gem install sass --pre
于 2013-04-24T10:08:00.680 回答