【问题标题】:JRuby requires jar file in runtimeJRuby 在运行时需要 jar 文件
【发布时间】:2015-04-29 00:33:56
【问题描述】:
我正在尝试找到一种在运行时将 jar 文件包含在我的 JRuby 程序中的方法。
解释:我有行
require 'path/to/jarSome.jar'
现在的问题是当程序开始运行时这个文件不存在,程序会创建那个 jar 文件(我稍后会在同一个程序上使用它)
有没有办法在运行时包含 jar?像这样:
# Some ruby code
# create/put the jar file in the location
require/import/load the jar file.???
【问题讨论】:
标签:
ruby
runtime
jruby
require
【解决方案1】:
我想我找到了答案:
class_loader = JRuby.runtime.jruby_class_loader
class_loader.add_url(java.io.File.new('path/to/jarSome.jar'))
【解决方案2】:
您也可以随时执行require 语句——ruby 就是这样动态的,您不需要在程序启动或源文件加载时执行它。
def create_and_require_jar
do_something_to_create_jar
require 'the/jar/i/created.jar'
end
如果您的问题是在您执行 require 时该 jar 尚不存在 - 只需在执行 require 时更改为在您创建 .jar 之后。
虽然我从未动态创建 .jar 以供创建它的同一程序使用(我不确定您为什么要这样做),但我已经完成了 @987654324 @ of a .jar in Jruby,作为动态逻辑的一部分,有时我需要它,有时我不需要它,并且在条件逻辑中执行 require,而不是在程序启动时立即执行。它工作得很好。
而且我发现您可以在 Jruby 中执行此操作非常棒,基于程序逻辑有条件地加载 Jar(首先检查 jar 是否存在,或者基于参数或配置)——如果可以的话直接用 Java 做到这一点,我不知道怎么做,虽然你也许可以!