我已经尝试了这个有点,任何试图调用从JRuby的代码返回JRuby的罐子本身,这种情况是有道理的,因为逻辑确实是从该罐子中评估/执行的。例如:
require 'java'
puts self.to_java.get_class().protection_domain().code_source().location().path()
或
require 'java'
class Path
def get_jar_path
self.to_java.get_class().protection_domain().code_source().location().path()
end
end
puts Path.new.get_jar_path
都返回路径jruby-complete.jar
,这可能是有用的在一定程度上,但显然不是你要找的东西。
唯一的办法我能得到这个工作(与rawr
,但这可以,如果你使用很容易地适应)在src/java/org/rubyforge/rawr
创建一个Java类:
package org.rubyforge.rawr;
public class Path {
public String getJarPath() {
return getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
}
}
然后从调用这个类JRuby的脚本:
require 'java'
java_import 'org.rubyforge.rawr.Path'
puts Path.new.get_jar_path
太棒了!有没有办法做到这一点没有_any_ java代码? – Jwosty 2012-03-16 23:30:47
我添加了我的JRuby尝试,但可能会得心应手,但无法让他们真正返回您所期望的。 – 2012-03-17 08:06:50
好吧,这就够了!另外,'to_java'部分是我正在寻找的;我找不到如何调用Java对象上定义的方法。谢谢! – Jwosty 2012-03-17 17:50:51