gpt4 book ai didi

java - 获取 JRuby jar 路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:24 25 4
gpt4 key购买 nike

类似于this问题,我想知道如何获取当前jar文件的路径。但与另一个问题不同的是,我想知道 jar 的路径,而不是当前文件 inside 的路径。例如,假设我在“/Users/MyUser/Jars/foo.jar”中有一个 jruby jar,里面是一个编译后的 ruby​​ 文件,位于“foo.jar/java/style/class/path.class”。 class.path 如何获取路径“/Users/MyUser/Jars/foo.jar”?

我还看到了a way to do it in Java , 但我就是不知道怎么翻译...

最佳答案

我对此进行了一些试验,任何从 JRuby 调用代码的尝试都会返回 jruby jar 本身,这是有道理的,因为逻辑确实是从该 jar 中评估/执行的。例如:

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,但如果你使用 warbler,这可以很容易地适应)是在 中创建一个 Java 类>src/java/org/rubyforge/rawr:

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

关于java - 获取 JRuby jar 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730660/

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