gpt4 book ai didi

java - 如何通过 JRuby 使用 Compass,嵌入到我的软件中?

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:19 25 4
gpt4 key购买 nike

我必须在我的 Java 软件中动态“编译” compass 文件。因此,按照在 stackoverflow 上找到的解释,我完成了这些步骤:

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

    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 ? JRuby 中的 -r 等效于什么?我试图将 gems 包含到 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

有什么想法吗?

最佳答案

错误信息是这样的:

Unable to load Sass. Please install it with one of the following commands:

gem install sass --pre

关于java - 如何通过 JRuby 使用 Compass,嵌入到我的软件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com