你知道 Logstash 有一个 Ruby 过滤器,它使我能够用 Ruby 编写代码,它通常包含在配置文件中,如下所示
filter {
ruby {
code => "...."
}
}
现在我有两个 Jar 文件,我想将它们包含在我的过滤器中,以便可以根据我在这些 Jar 文件中的操作来处理我的输入。但是,我不能(显然)在 ruby 代码中包含 Jar 文件。我一直在寻找解决方案。
你知道 Logstash 有一个 Ruby 过滤器,它使我能够用 Ruby 编写代码,它通常包含在配置文件中,如下所示
filter {
ruby {
code => "...."
}
}
现在我有两个 Jar 文件,我想将它们包含在我的过滤器中,以便可以根据我在这些 Jar 文件中的操作来处理我的输入。但是,我不能(显然)在 ruby 代码中包含 Jar 文件。我一直在寻找解决方案。
所以为了回答这个问题,我从 Elastc.co 找到了这个精彩的教程:
展示了创建新 gem 并将其用作 Logstash 的过滤器的步骤。
https://www.elastic.co/guide/en/logstash/current/_how_to_write_a_logstash_filter_plugin.html
Orrr回答你原来的问题,
你可以在你的 ruby 代码中包含一个 JAR,但你需要使用 jruby,
请参阅此处有关如何从 JRuby 中的 JAR 访问 java 代码的说明:
https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#from-jar-files
要使用来自 JRuby 的 jar 文件中的资源,该 jar 文件必须位于类路径中或通过 require 方法可用:
require 'path/to/mycode.jar'
这需要使 mycode.jar 中的资源可以被以后的命令(如import
和 )发现include_package
。请注意,通过 require 搜索加载 jar 文件
$LOAD_PATH
,就像搜索普通的 ruby 文件一样。