【问题标题】: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 做到这一点,我不知道怎么做,虽然你也许可以!

      【讨论】:

      • 看起来更简单的解决方案 谢谢! :P