我有一個將數(shù)據(jù)轉(zhuǎn)換為 JSON 格式的 java 程序。我能夠成功地將程序構(gòu)建到 jar 文件中,并在獨(dú)立程序中成功使用 jar 的功能。我為調(diào)用此 jar 的 Logstash 創(chuàng)建了一個 jruby 插件。運(yùn)行 Logstash 時:gem build logstash-filter-example.gemspec &&../../logstash-5.6.7.freshinstall/bin/logstash-plugin install logstash-filter-example-0.1.1.gem &&../../logstash-5.6.7.freshinstall/bin/logstash -e 'input { stdin{} } filter { example {} } output {stdout { codec => rubydebug }}'我收到以下錯誤:/dataservice/DataServiceClient.java:156:in `parseQueryRowEntry': java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.node.JsonNodeFactory.numberNode(Ljava/math/BigDecimal;)Lcom/fasterxml/jackson/databind/node/NumericNode; from com/mike/dataservice/DataServiceClient.java:93:in `toJsonObject' from com/mike/dataservice/DataServiceClient.java:66:in `getData' from java/lang/reflect/Method.java:498:in `invoke' from /Users/michael.dobrin/compilationsFromSource/logstash-5.6.7/logstash-5.6.7.freshinstall/vendor/local_gems/ecdbfdf7/logstash-filter-example-0.1.1/lib/logstash/filters/example.rb:49:in `filter' from /Users/michael.dobrin/compilationsFromSource/logstash-5.6.7/logstash-5.6.7.freshinstall/logstash-core/lib/logstash/filters/base.rb:145:in `do_filter' from /Users/michael.dobrin/compilationsFromSource/logstash-5.6.7/logstash-5.6.7.freshinstall/logstash-core/lib/logstash/filters/base.rb:164:in `multi_filter' from /Users/michael.dobrin/compilationsFromSource/logstash-5.6.7/logstash-5.6.7.freshinstall/logstash-core/lib/logstash/filters/base.rb:164:in `multi_filter' from org/jruby/RubyArray.java:1613:in `each'由于某種原因,無法識別 numberNode() 方法。但是,使用獨(dú)立的 jruby 程序運(yùn)行我的 jar 時沒有問題,即使使用 Logstash 的本地安裝的 jruby 實(shí)例也是如此。此外,該程序成功地使用了我的 jar 文件中的一些方法...... numberNode(Ljava/math/BigDecimal;) 是唯一無法識別的方法。為什么 Logstash 看不到這個?
1 回答

長風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊
很可能 Logstash 添加JsonNodeFactory
到與您的應(yīng)用程序期望的版本不兼容的類路徑。該方法圍繞jackson-databind-2.10進(jìn)行了重構(gòu)。
您可以通過檢查從何處加載類來驗證它。例如 System.out.println(JsonNodeFactory.class.getProtectionDomain().getCodeSource().getLocation());
添加回答
舉報
0/150
提交
取消