JRuby 在运行时需要 jar 文件

JRuby requires jar file in runtime

我正试图找到一种方法在 运行 时间内将 jar 文件包含在我的 JRuby 程序中。

说明:我有行

require 'path/to/jarSome.jar'

现在的问题是当程序启动时这个文件不存在 运行ning,程序创建那个 jar 文件(我稍后在同一个程序中使用它)

有没有办法在 运行 时间内包含 jar?像这样:

# Some ruby code
# create/put the jar file in the location
require/import/load the jar file.???

我想我找到了答案:

class_loader = JRuby.runtime.jruby_class_loader
class_loader.add_url(java.io.File.new('path/to/jarSome.jar'))

你也可以随时执行require语句——ruby是动态的,你不需要在程序启动或源文件加载时执行它。

def create_and_require_jar
  do_something_to_create_jar
  require 'the/jar/i/created.jar'
end

如果您的问题是在您执行 require 时 jar 尚不存在——只需将执行 require 的时间更改为在创建 .jar 之后。

虽然我从未创建过动态创建的 .jar 供创建它的同一个程序使用(我不确定您为什么要这样做),但我 在 Jruby 中完成了一个 .jar 的 require,作为动态逻辑的一部分,有时我需要它,有时我不需要,并且在条件逻辑中执行要求,而不是在程序启动时立即执行.它工作正常。

而且我发现您可以在 Jruby 中执行此操作非常好,基于程序逻辑有条件地加载 Jar(首先检查 jar 是否存在,或者基于参数或配置)——如果你可以直接 Java 做到这一点,我不知道怎么做,尽管你可能会做到!