org.jruby.embed.EvalFailedException:(LoadError)没有要加载的此类文件

时间:2013-12-28 20:52:15

标签: java ruby jruby jruby-java-interop

我使用warbler从ruby代码创建了jar文件。 jar中的文件结构如下:

core.jar添加
----核心
-------- LIB
------------ gui.class
------------ gui.rb

我还有其他java应用程序,我想运行gui.rb的gui类中的“connect”函数。

我在java中试过以下代码:

ScriptingContainer SCRIPTING_CONTAINER = new ScriptingContainer;
// String CORE_JAR_PATH = "core.jar";
String CORE_JAR_PATH = "core.jar!/core/lib";
SCRIPTING_CONTAINER.getLoadPaths().add(CORE_JAR_PATH);
SCRIPTING_CONTAINER.runScriptlet("require 'gui'");

上面代码中的最后一行给出了异常“LoadError:没有这样的文件要加载 - gui”。我怎样才能调用gui.rb的功能?

1 个答案:

答案 0 :(得分:0)

<强>芯/ LIB / gui.rb

puts "core was loaded!"

我将Ruby代码(不使用Warbler或其他类似代码)打包为jar -cf core.jar core

<强> Main.java

import org.jruby.embed.ScriptingContainer;

public class Main {
    public static void main(String[] args) {
        ScriptingContainer container = new ScriptingContainer();
        container.runScriptlet("require './core.jar'");
        container.runScriptlet("require 'core/lib/gui'");
    }
}

编译为javac -cp jruby-1.7.9.jar Main.java -d build

<强>运行

然后我可以将此代码作为java -cp jruby-1.7.9.jar:build/ Main运行。