我使用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的功能?
答案 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
运行。