Jar 把额外的罐子藏起来

Jar 把额外的罐子藏起来,jar,logstash,sqlitejdbc,Jar,Logstash,Sqlitejdbc,我正在尝试向Logstash1.4.2添加一个自定义过滤器,它是作为Debian包安装的。还安装了contrib插件()。此筛选器建立到sqlite数据库的连接,并为此使用JDBC sqlite驱动程序: require "logstash/filters/base" require "logstash/namespace" require "jdbc/sqlite3" require "java" class LogStash::Filters::MyFilter < LogStash

我正在尝试向Logstash1.4.2添加一个自定义过滤器,它是作为Debian包安装的。还安装了contrib插件()。此筛选器建立到sqlite数据库的连接,并为此使用JDBC sqlite驱动程序:

require "logstash/filters/base"
require "logstash/namespace"
require "jdbc/sqlite3"
require "java"

class LogStash::Filters::MyFilter < LogStash::Filters::Base

  (...)

  public
  def register

    if @database.nil?
       raise "You must specify 'database => ...' in your filter"
    elsif not File.exists?(@database)
       raise "The database does not exist"
    end

    url = "jdbc:sqlite:" + @database

    Java::OrgSqlite::JDBC #initialize the driver
    @connection = java.sql.DriverManager.getConnection(url)

    @logger.info("Using database", :path => @database)

  end # def register

  (...)

end # class LogStash::Filters::MyFilter
需要“日志存储/过滤器/基础”
需要“日志存储/命名空间”
需要“jdbc/sqlite3”
需要“java”
类LogStash::Filters::MyFilter…'
elsif不是文件。是否存在?(@database)
引发“数据库不存在”
终止
url=“jdbc:sqlite:”+@数据库
Java::OrgSqlite::JDBC#初始化驱动程序
@connection=java.sql.DriverManager.getConnection(url)
@info(“使用数据库”,:path=>@database)
结束#def寄存器
(...)
结束#类LogStash::Filters::MyFilter
但是,当我尝试启动logstash时,日志中出现以下错误:

“无法加载Java类org.sqlite.JDBC”

我试图将contrib插件提供的
sqlite-jdbc-3.7.2.jar
文件放在几个位置,但到目前为止,我无法确定定制插件所需jar的正确位置,或者这是否是一个配置问题


有什么想法吗?

虽然我找不到在Logstash 1.4中使用外部JAR的方法,但我可以通过将SQlite JDBC替换为来实现它,这已经包括在内了

require "logstash/filters/base"
require "logstash/namespace"
require "sequel"

class LogStash::Filters::MyFilter < LogStash::Filters::Base

  (...)

  public
  def register

    if @database.nil?
       raise "You must specify 'database => ...' in your filter"
    elsif not File.exists?(@database)
       raise "The database does not exist"
    end

    @db = Sequel.connect("jdbc:sqlite:#{@database}")
    @logger.info("Using database", :path => @database)

  end # def register

  (...)

end # class LogStash::Filters::MyFilter
需要“日志存储/过滤器/基础”
需要“日志存储/命名空间”
需要“续集”
类LogStash::Filters::MyFilter…'
elsif不是文件。是否存在?(@database)
引发“数据库不存在”
终止
@db=Sequel.connect(“jdbc:sqlite:{@database}”)
@info(“使用数据库”,:path=>@database)
结束#def寄存器
(...)
结束#类LogStash::Filters::MyFilter

您找到解决此问题的标准方法了吗?