Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过JRuby使用Compass来嵌入我的软件';?_Java_Ruby_Jruby_Compass Sass - Fatal编程技术网

Java 如何通过JRuby使用Compass来嵌入我的软件';?

Java 如何通过JRuby使用Compass来嵌入我的软件';?,java,ruby,jruby,compass-sass,Java,Ruby,Jruby,Compass Sass,我必须在java软件中动态“编译”compass文件。根据stackoverflow上的说明,我完成了以下步骤: 获取JRuby(1.7.3),配置JRuby.jar的路径和二进制文件(gem、rake…),并学习从Java启动ruby脚本 使用以下命令行将compass和Dependencies gems放入本地目录 gem install -i ./compass compass =>所以我得到了一个目录/compass/,其中包含bin、cache、doc、gems和specifica

我必须在java软件中动态“编译”compass文件。根据stackoverflow上的说明,我完成了以下步骤:

  • 获取JRuby(1.7.3),配置JRuby.jar的路径和二进制文件(gem、rake…),并学习从Java启动ruby脚本
  • 使用以下命令行将compass和Dependencies gems放入本地目录

    gem install -i ./compass compass
    
    =>所以我得到了一个目录
    /compass/
    ,其中包含
    bin、cache、doc、gems和specifications
    目录

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

  • 在本地目录中编写一个测试脚本
    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
?JRuby中的
-r
的等价物是什么?我已经尝试将gems包含到jruby.jar中,在java构建路径的externals jars中添加compass-lib.jar,但这两种方法都不起作用,我仍然有:

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

有什么想法吗?

错误消息说:

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

gem install sass --pre

使用gem安装指南针,自动安装sass。那是不是意味着罗盘安装了“糟糕”的sass?看起来很奇怪。。。但是我会试试:)我以为你想从
.jar
加载你的宝石?那么,是否安装gem无关紧要,重要的是是否将其打包到
.jar
中。当我运行
gem install-I./compass compass
时,它会安装compass,但也会将sass-3.2.8安装到./compass目录中。使用pre安装sass,它将sass-3.3.0.alpha.133添加到目录中(这就是工作!)。所以我认为指南针安装失败,但可能是另一个问题?
gem install sass --pre