【问题标题】:Eclipse can't find my installed Ruby gems (JRuby)Eclipse 找不到我安装的 Ruby gem (JRuby)
【发布时间】:2016-02-15 23:47:55
【问题描述】:

所以,我尝试在 JRuby 的帮助下在我的 java 代码中使用我的 ruby​​ 脚本。但是有一个问题,eclipse无法使用我安装的gem。出于测试目的,我一直在尝试运行一段需要我安装的“nokogiri”ruby gem 的代码。当我尝试运行 java 代码时,得到的结果如下:

LoadError: no such file to load -- nokogiri
  require at org/jruby/RubyKernel.java:939
    <top> at /home/amng/workspace/scripts/xx/x/getMSPatches:4
Exception in thread "main" org.jruby.embed.EvalFailedException: (LoadError) no such file to load -- nokogiri
at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:131)
at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1307)
at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1352)
at jobs.Teste.run(Teste.java:17)
at jobs.Teste.main(Teste.java:11)

原因:org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- nokogiri 在 org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:939) 在 RUBY.(/home/amng/workspace/scripts/myPrecious/MSPatches/getMSPatches:4)

我从网站下载了 jruby.jar 并添加到项目的构建路径中。我还使用 Dynamic Languages Toolkit (DLTK) 插件将 Eclipse 指向了 JRuby 二进制文件。我需要做什么才能确保 eclipse 可以使用我安装的 gem?

编辑:我的 java 代码:

import org.jruby.embed.ScriptingContainer;
import org.jruby.embed.LocalVariableBehavior;
import org.jruby.embed.PathType;

public class Main {

    public static void main(String[] args) {
        ScriptingContainer ruby = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
        Object result = ruby.runScriptlet(PathType.ABSOLUTE, "/home/amng/workspace/scripts/myPrecious/MSPatches/getMSPatches");
        System.out.println(result);
}

}

我的(工作)ruby 代码 (getMSPatches) 的前两行是:

# encoding: UTF-8
require 'nokogiri'

【问题讨论】:

  • Eclipse,认真的吗?尝试先安装 nokogiri,然后重复您的操作。还有gem list | grep "nokogiri".
  • Eclipse 有什么问题?自从我用 Java 开发任何东西以来已经有一段时间了,但当时 Eclipse 是一个很棒的工具。你问的输出是:nokogiri (1.6.6.2)。
  • 您是否在脚本中添加了require 'nokogiri'?你能在你使用它的地方添加一段代码吗?
  • 我做到了,我添加了 java 和一段 ruby​​ 代码。我可能遗漏了一些东西......因为我将 jruby.jar 添加到项目中,Eclipse(也只是在 IntelliJ 上尝试过)是否使用 jruby 的 jar?如果是这样,我该如何解决这个问题?如何告诉 IDE 对文件和导入使用 JAR,但使用我系统安装的 ruby​​?

标签: java ruby eclipse gem


【解决方案1】:

尝试设置jruby主目录

ScriptingContainer ruby = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
ruby.setHomeDirectory("/jruby-9.0.5.0");   

这为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多